diff --git a/ChangeLog b/ChangeLog index e98a57f5..50d2e90e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +12-JUN-2017: 6.7.10 + +- Fixes Java compliance issue in Gliffy import + 12-JUN-2017: 6.7.9 - Adds css, default styles, libraries to Editor.configure diff --git a/VERSION b/VERSION index fbc4904f..8a447c1c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.7.9 \ No newline at end of file +6.7.10 \ No newline at end of file diff --git a/src/com/mxgraph/io/gliffy/model/GliffyObject.java b/src/com/mxgraph/io/gliffy/model/GliffyObject.java index 66252d4a..bc0f448c 100644 --- a/src/com/mxgraph/io/gliffy/model/GliffyObject.java +++ b/src/com/mxgraph/io/gliffy/model/GliffyObject.java @@ -1,5 +1,6 @@ package com.mxgraph.io.gliffy.model; +import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; @@ -15,25 +16,41 @@ import com.mxgraph.model.mxCell; public class GliffyObject implements PostDeserializable { private static Set GRAPHICLESS_SHAPES = new HashSet(); + private static Set GROUP_SHAPES = new HashSet(); + private static Set MINDMAP_SHAPES = new HashSet<>(); public float x; + public float y; + public int id; + public float width; + public float height; + public float rotation; + public String uid; + public String tid; + public String order; + public boolean lockshape; + public Graphic graphic; + public List children; + public Constraints constraints; + public List linkMap; public mxCell mxObject;// the mxCell this gliffy object got converted into + public GliffyObject parent = null; static @@ -54,8 +71,6 @@ public class GliffyObject implements PostDeserializable GRAPHICLESS_SHAPES.add("com.gliffy.shape.uml.uml_v1.default.composition"); GRAPHICLESS_SHAPES.add("com.gliffy.shape.uml.uml_v1.default.aggregation"); GRAPHICLESS_SHAPES.add("com.gliffy.shape.uml.uml_v1.default.association"); - - GRAPHICLESS_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.package"); GRAPHICLESS_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.simple_class"); @@ -97,11 +112,11 @@ public class GliffyObject implements PostDeserializable */ GROUP_SHAPES.add("com.gliffy.shape.basic.basic_v1.default.group"); - + 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"); - + } public GliffyObject() @@ -110,11 +125,12 @@ public class GliffyObject implements PostDeserializable public Graphic getGraphic() { - if(graphic != null) + if (graphic != null) return graphic; - else if(isUml() || GRAPHICLESS_SHAPES.contains(uid)) + else if (isUml() || GRAPHICLESS_SHAPES.contains(uid)) return getFirstChildGraphic(); - else return null; + else + return null; } public mxCell getMxObject() @@ -158,12 +174,12 @@ public class GliffyObject implements PostDeserializable { return graphic.getText().getHtml(); } - - public String getLink() + + public String getLink() { - if(linkMap != null && !linkMap.isEmpty()) + if (linkMap != null && !linkMap.isEmpty()) return linkMap.get(0).url; - + return null; } @@ -181,7 +197,7 @@ public class GliffyObject implements PostDeserializable { return uid != null && GROUP_SHAPES.contains(uid); } - + public boolean isMindmap() { return uid != null && MINDMAP_SHAPES.contains(uid); @@ -191,10 +207,10 @@ public class GliffyObject implements PostDeserializable { return graphic != null && graphic.getType().equals(Graphic.Type.LINE); } - - private boolean isUml() + + private boolean isUml() { - return uid != null && (uid.startsWith("com.gliffy.shape.uml.uml")); + return uid != null && (uid.startsWith("com.gliffy.shape.uml.uml")); } public boolean isShape() @@ -203,11 +219,11 @@ public class GliffyObject implements PostDeserializable { return graphic.getType().equals(Graphic.Type.SHAPE) || graphic.getType().equals(Graphic.Type.MINDMAP); } - else + else { //some UML shapes do not have a graphic,instead their graphic type is determined by their first child Graphic g = getFirstChildGraphic(); - return g != null && g.getType().equals(Graphic.Type.SHAPE); + return g != null && g.getType().equals(Graphic.Type.SHAPE); } } @@ -235,22 +251,21 @@ public class GliffyObject implements PostDeserializable { return uid != null && uid.startsWith("com.gliffy.shape.venn"); } - + public String getGradientColor() { String gradientColor = "#FFFFFF"; - + // Gradient colors are lighter version of the fill color except for radial // venn shapes, where white is used with a radial gradient (we use linear) - if (graphic != null && graphic.Shape != null && uid != null && - !uid.startsWith("com.gliffy.shape.radial")) + if (graphic != null && graphic.Shape != null && uid != null && !uid.startsWith("com.gliffy.shape.radial")) { String hex = graphic.Shape.fillColor; - + if (hex != null && hex.length() == 7 && hex.charAt(0) == '#') { long clr = Long.parseLong(hex.substring(1), 16); - + long r = Math.min(0xFF0000, ((clr & 0xFF0000) + 0xAA0000)) & 0xFF0000; long g = Math.min(0x00FF00, ((clr & 0x00FF00) + 0x00AA00)) & 0x00FF00; long b = Math.min(0x0000FF, ((clr & 0x0000FF) + 0x0000AA)) & 0x0000FF; @@ -258,7 +273,7 @@ public class GliffyObject implements PostDeserializable gradientColor = String.format("#%06X", 0xFFFFFF & (r + g + b)); } } - + return gradientColor; } @@ -267,21 +282,19 @@ public class GliffyObject implements PostDeserializable */ public boolean isGradientIgnored() { - return uid != null && - (uid.startsWith("com.gliffy.shape.venn.outline") || - uid.startsWith("com.gliffy.shape.venn.flat")); + return uid != null && (uid.startsWith("com.gliffy.shape.venn.outline") || uid.startsWith("com.gliffy.shape.venn.flat")); } - + /** * Returns a boolean indicating if this object is a subroutine * @return true if subroutine, false otherwise */ - public boolean isSubRoutine() + public boolean isSubRoutine() { return uid.equals("com.gliffy.shape.flowchart.flowchart_v1.default.subroutine"); } - public boolean isUnrecognizedGraphicType() + public boolean isUnrecognizedGraphicType() { return graphic != null && graphic.type == null; } @@ -303,57 +316,61 @@ public class GliffyObject implements PostDeserializable } @Override - public void postDeserialize() { - if(isGroup()) + public void postDeserialize() + { + if (isGroup()) normalizeChildrenCoordinates(); } - + /** * Some Gliffy diagrams have groups whose children have negative coordinates. * This is a problem in draw.io as they get set to 0. * This method expands the groups left and up and adjusts children's coordinates so that they are never less than zero. */ - private void normalizeChildrenCoordinates() { + private void normalizeChildrenCoordinates() + { //sorts the list to find the leftmost child and it's X - Comparator cx = new Comparator() { + Comparator cx = new Comparator() + { @Override - public int compare(GliffyObject o1, GliffyObject o2) { - return (int)(o1.x - o2.x); + public int compare(GliffyObject o1, GliffyObject o2) + { + return (int) (o1.x - o2.x); } }; - - children.sort(cx); + + Collections.sort(children, cx); float xMin = children.get(0).x; - - if(xMin < 0) + + if (xMin < 0) { width += -xMin; //increase width x += xMin; - - for(GliffyObject child : children) //increase x - child.x += -xMin; + + for (GliffyObject child : children) //increase x + child.x += -xMin; } - + //sorts the list to find the leftmost child and it's Y - Comparator cy = new Comparator() { + Comparator cy = new Comparator() + { @Override - public int compare(GliffyObject o1, GliffyObject o2) { - return (int)(o1.y - o2.y); + public int compare(GliffyObject o1, GliffyObject o2) + { + return (int) (o1.y - o2.y); } }; - + children.sort(cy); float yMin = children.get(0).y; - - if(yMin < 0) + + if (yMin < 0) { height += -yMin; //increase height y += yMin; - - for(GliffyObject child : children) //increase y - child.y += -yMin; + + for (GliffyObject child : children) //increase y + child.y += -yMin; } } - - } diff --git a/war/WEB-INF/appengine-web.xml b/war/WEB-INF/appengine-web.xml index 2eb8e09d..5f7bfaec 100644 --- a/war/WEB-INF/appengine-web.xml +++ b/war/WEB-INF/appengine-web.xml @@ -2,7 +2,7 @@ drawdotio - test + 6-7-10 diff --git a/war/cache.manifest b/war/cache.manifest index 1806f4f7..ee00efb5 100644 --- a/war/cache.manifest +++ b/war/cache.manifest @@ -1,7 +1,7 @@ CACHE MANIFEST # THIS FILE WAS GENERATED. DO NOT MODIFY! -# 06/12/2017 03:01 PM +# 06/12/2017 02:42 PM app.html index.html?offline=1 diff --git a/war/js/app.min.js b/war/js/app.min.js index 061ef1cd..642f4b21 100644 --- a/war/js/app.min.js +++ b/war/js/app.min.js @@ -7858,7 +7858,7 @@ N=document.createElement("tr"),H=N.cloneNode(!0),V=document.createElement("td"), mxResources.get("fitToSheetsAcross"));ba.appendChild(k);mxUtils.write(Y,mxResources.get("fitToBy"));var X=R.cloneNode(!0);S.appendChild(X);mxEvent.addListener(R,"focus",function(){Q.checked=!0});mxEvent.addListener(X,"focus",function(){Q.checked=!0});k=document.createElement("span");mxUtils.write(k,mxResources.get("fitToSheetsDown"));P.appendChild(k);N.appendChild(V);N.appendChild(O);N.appendChild(ba);H.appendChild(Y);H.appendChild(S);H.appendChild(P);W.appendChild(N);W.appendChild(H);v.appendChild(W); m.appendChild(v);f.appendChild(m);m=document.createElement("div");k=document.createElement("div");k.style.fontWeight="bold";k.style.marginBottom="12px";mxUtils.write(k,mxResources.get("paperSize"));m.appendChild(k);k=document.createElement("div");k.style.marginBottom="12px";var da=PageSetupDialog.addPageFormatPanel(k,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(k);k=document.createElement("span");mxUtils.write(k,mxResources.get("pageScale"));m.appendChild(k); var aa=document.createElement("input");aa.style.cssText="margin:0 8px 0 8px;";aa.setAttribute("value","100 %");aa.style.width="60px";m.appendChild(aa);f.appendChild(m);k=document.createElement("div");k.style.cssText="text-align:right;margin:62px 0 0 0;";m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst&&k.appendChild(m);a.isOffline()||(v=mxUtils.button(mxResources.get("help"),function(){window.open("https://desk.draw.io/support/solutions/articles/16000048947")}), -v.className="geBtn",k.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),v.className="geBtn",k.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});v.className="geBtn gePrimaryBtn";k.appendChild(v);a.editor.cancelFirst||k.appendChild(m);f.appendChild(k);this.container=f}})();(function(){EditorUi.VERSION="6.7.9";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.prototype.emptyDiagramXml='';EditorUi.prototype.emptyLibraryXml="[]";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight= +v.className="geBtn",k.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),v.className="geBtn",k.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});v.className="geBtn gePrimaryBtn";k.appendChild(v);a.editor.cancelFirst||k.appendChild(m);f.appendChild(k);this.container=f}})();(function(){EditorUi.VERSION="6.7.10";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.prototype.emptyDiagramXml='';EditorUi.prototype.emptyLibraryXml="[]";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.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;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas"),b=new Image;b.onload=function(){try{a.getContext("2d").drawImage(b,0,0);var c=a.toDataURL("image/png");EditorUi.prototype.useCanvasForExport= null!=c&&6
')))}catch(n){}try{a=document.createElement("canvas");a.width=a.height=1;var c=a.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==c.match("image/jpeg")}catch(n){}})(); diff --git a/war/js/atlas.min.js b/war/js/atlas.min.js index d87cdd33..885a6d8b 100644 --- a/war/js/atlas.min.js +++ b/war/js/atlas.min.js @@ -7871,7 +7871,7 @@ mxResources.get("fitToSheetsAcross"));ba.appendChild(k);mxUtils.write(Y,mxResour m.appendChild(v);f.appendChild(m);m=document.createElement("div");k=document.createElement("div");k.style.fontWeight="bold";k.style.marginBottom="12px";mxUtils.write(k,mxResources.get("paperSize"));m.appendChild(k);k=document.createElement("div");k.style.marginBottom="12px";var da=PageSetupDialog.addPageFormatPanel(k,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(k);k=document.createElement("span");mxUtils.write(k,mxResources.get("pageScale"));m.appendChild(k); var aa=document.createElement("input");aa.style.cssText="margin:0 8px 0 8px;";aa.setAttribute("value","100 %");aa.style.width="60px";m.appendChild(aa);f.appendChild(m);k=document.createElement("div");k.style.cssText="text-align:right;margin:62px 0 0 0;";m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst&&k.appendChild(m);a.isOffline()||(v=mxUtils.button(mxResources.get("help"),function(){window.open("https://desk.draw.io/support/solutions/articles/16000048947")}), v.className="geBtn",k.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),v.className="geBtn",k.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});v.className="geBtn gePrimaryBtn";k.appendChild(v);a.editor.cancelFirst||k.appendChild(m);f.appendChild(k);this.container=f}})(); -(function(){EditorUi.VERSION="6.7.9";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.prototype.emptyDiagramXml='';EditorUi.prototype.emptyLibraryXml="[]";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight= +(function(){EditorUi.VERSION="6.7.10";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.prototype.emptyDiagramXml='';EditorUi.prototype.emptyLibraryXml="[]";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.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;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas"),b=new Image;b.onload=function(){try{a.getContext("2d").drawImage(b,0,0);var c=a.toDataURL("image/png");EditorUi.prototype.useCanvasForExport= null!=c&&6
')))}catch(n){}try{a=document.createElement("canvas");a.width=a.height=1;var c=a.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==c.match("image/jpeg")}catch(n){}})(); diff --git a/war/js/embed-static.min.js b/war/js/embed-static.min.js index a84614f2..cb02e528 100644 --- a/war/js/embed-static.min.js +++ b/war/js/embed-static.min.js @@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+x.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototy 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;enavigator.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:"6.7.10",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/")|| diff --git a/war/js/reader.min.js b/war/js/reader.min.js index 57141f15..3ee037e5 100644 --- a/war/js/reader.min.js +++ b/war/js/reader.min.js @@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+x.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototy 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;enavigator.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:"6.7.10",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/")||