Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jgraph/drawio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benson <david@jgraph.com>2018-03-31 17:00:01 +0300
committerDavid Benson <david@jgraph.com>2018-03-31 17:00:01 +0300
commit7944ad0889bb61abd1bb1a62810644c1db3ce891 (patch)
tree927185a9c07ccfcded0c279023b5a70b2fd9aeca
parentfb1afc0948057bfe088056b721b376f3ed1ae720 (diff)
8.5.2 releasev8.5.2
Former-commit-id: 7a7e167f663a809b80d76a1733a9e5d433bf4130
-rw-r--r--ChangeLog10
-rw-r--r--VERSION2
-rw-r--r--src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java27
-rw-r--r--src/main/webapp/cache.manifest2
-rw-r--r--src/main/webapp/connect/confluence/connect-dev.json270
-rw-r--r--src/main/webapp/connect/confluence/connect.json9
-rw-r--r--src/main/webapp/connect/confluence/connectUtils-1-4-8.js112
-rw-r--r--src/main/webapp/connect/confluence/macroEditor-1-4-8.html2
-rw-r--r--src/main/webapp/connect/confluence/macroEditor.html2
-rw-r--r--src/main/webapp/connect/confluence/viewer-1-4-8.html72
-rw-r--r--src/main/webapp/connect/jira/connect-dev.json93
-rw-r--r--src/main/webapp/images/logo-quip.pngbin0 -> 2628 bytes
-rw-r--r--src/main/webapp/images/sidebar-basic.pngbin12642 -> 17205 bytes
-rw-r--r--src/main/webapp/images/sidebar-flowchart.pngbin8569 -> 10059 bytes
-rw-r--r--src/main/webapp/index.html6
-rw-r--r--src/main/webapp/js/app.min.js105
-rw-r--r--src/main/webapp/js/atlas-viewer.min.js52
-rw-r--r--src/main/webapp/js/atlas.min.js105
-rw-r--r--src/main/webapp/js/diagramly/Editor.js1
-rw-r--r--src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js19
-rw-r--r--src/main/webapp/js/diagramly/sidebar/Sidebar-Flowchart.js17
-rw-r--r--src/main/webapp/js/embed-static.min.js2
-rw-r--r--src/main/webapp/js/reader.min.js2
-rw-r--r--src/main/webapp/js/shapes.min.js73
-rw-r--r--src/main/webapp/js/viewer.min.js52
-rw-r--r--src/main/webapp/plugins/cConf-1-4-8.js22
-rw-r--r--src/main/webapp/shapes/mxBasic.js1370
-rw-r--r--src/main/webapp/shapes/mxFlowchart.js74
28 files changed, 1932 insertions, 569 deletions
diff --git a/ChangeLog b/ChangeLog
index c9a91426..e7854de3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+31-MAR-2018: 8.5.2
+
+- Add mass gliffy import in Confluence Cloud
+- Fixes importing Gliffy sitemap stencils
+- Adds workaround for Confluence Cloud saveMacro problem
+
+28-MAR-2018: 8.5.1
+
+- Confluence Cloud integration improvements
+
23-MAR-2018: 8.5.0
- Adds shapes in Basic sidebar
diff --git a/VERSION b/VERSION
index 5eaed3b7..bd0b85a9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-8.5.0 \ No newline at end of file
+8.5.2 \ No newline at end of file
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 31fc60fc..16b1f5b6 100644
--- a/src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java
+++ b/src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java
@@ -121,9 +121,32 @@ public class GliffyObject implements PostDeserializable
GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.home");
GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.gliffy");
GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.form");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.shopping_cart");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.text");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.video");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.upload");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.slideshow");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.sitemap");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.settings");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.search");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.script");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.print");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.pricing");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.photo");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.map");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.login");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.game");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.gallery");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.download");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.document");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.chat");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.calendar");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.audio");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.profile");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.error");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.success");
+ GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.cloud");
- /*GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.page");
- */
GROUP_SHAPES.add("com.gliffy.shape.basic.basic_v1.default.group");
GROUP_SHAPES.add("com.gliffy.shape.erd.erd_v1.default.entity_with_attributes");
diff --git a/src/main/webapp/cache.manifest b/src/main/webapp/cache.manifest
index 73a03cc8..5460179f 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!
-# 03/23/2018 11:58 AM
+# 03/31/2018 02:35 PM
app.html
index.html?offline=1
diff --git a/src/main/webapp/connect/confluence/connect-dev.json b/src/main/webapp/connect/confluence/connect-dev.json
deleted file mode 100644
index c4fa7ff5..00000000
--- a/src/main/webapp/connect/confluence/connect-dev.json
+++ /dev/null
@@ -1,270 +0,0 @@
-{
- "name": "Draw.io gaudenz",
- "description": "Draw.io add-on for Confluence",
- "key": "com.mxgraph.confluence.plugins.diagramly",
- "baseUrl": "https://bb63834e.ngrok.io",
- "vendor":
- {
- "name": "JGraph Ltd.",
- "url": "https://www.jgraph.com"
- },
- "links": {
- "documentation": "https://support.draw.io/display/DFCC/draw.io+for+Confluence+Cloud"
- },
- "version": "1.4.8",
- "authentication":
- {
- "type": "none"
- },
- "modules":
- {
- "generalPages": [
- {
- "key": "lightbox",
- "url": "/connect/confluence/viewer-1-4-8.html?lightbox=1",
- "name": {
- "value": "Lightbox"
- }
- },
- {
- "key": "customContentViewer",
- "url": "/connect/confluence/viewer-1-4-8.html?custom=1&contentId={content.id}",
- "name": {
- "value": "Draw.io Viewer"
- }
- }
- ],
- "customContent": [{
- "key": "drawio-diagram",
- "name": {
- "value": "Draw.io Diagrams"
- },
- "uiSupport": {
- "contentViewComponent": {
- "moduleKey": "customContentViewer"
- },
- "icons": {
- "item": {
- "url": "/images/drawlogo48.png"
- }
- }
- },
- "apiSupport": {
- "supportedContainerTypes": ["page", "comment", "space", "blogpost"],
- "supportedChildTypes": ["attachment"],
- "indexing": {
- "enabled": true
- }
- }
- }
- ],
- "dynamicContentMacros":
- [
- {
- "name":
- {
- "i18n": "drawioMacro",
- "value": "Draw.io Diagram"
- },
- "url": "/connect/confluence/viewer-1-4-8.html?ceoId=${page.id}&diagramName=${diagramName}&revision=${revision}&width=${width}&height=${height}&tbstyle=${tbstyle}&lbox=${lbox}&zoom=${zoom}&links=${links}&owningPageId=${pageId}",
- "width": "100%",
- "description":
- {
- "i18n": "description",
- "value": "Inserts a new Draw.io Diagram"
- }, "icon":
- {
- "width": 128,
- "height": 128,
- "url": "/images/drawlogo128.png"
- },
- "categories": [
- "visuals"
- ],
- "outputType": "block",
- "featured": true,
- "key": "drawio",
- "parameters":
- [
- {
- "identifier": "diagramName",
- "name":
- {
- "value": "Diagram name (do not change)"
- },
- "type": "string"
- },
- {
- "identifier": "autoSize",
- "name":
- {
- "value": "automatic size"
- },
- "type": "boolean"
- },
- {
- "identifier": "PageId",
- "name":
- {
- "value": "Parent page ID"
- },
- "type": "string"
- },
- {
- "identifier": "baseUrl",
- "name":
- {
- "value": "Confluence Base URL"
- },
- "type": "string"
- },
- {
- "identifier": "width",
- "name":
- {
- "value": "Diagram width"
- },
- "type": "string"
- },
- {
- "identifier": "height",
- "name":
- {
- "value": "Diagram Height"
- },
- "type": "string"
- }
- ],
- "editor": {
- "url": "/connect/confluence/macroEditor-1-4-8.html?ceoId=${page.id}&diagramName=${diagramName}",
- "width": "100%",
- "height": "100%",
- "editTitle":
- {
- "value" : "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
- },
- "insertTitle":
- {
- "value" : "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
- }
- },
- "imagePlaceholder": {
- "width": 500,
- "height": 300,
- "url": "/connectImage",
- "applyChrome": false
- },
- "renderModes": {
- "default": {
- "url": "/connectRender?pageId=${page.id}&diagramName=${diagramName}"
- }
- }
- },
- {
- "name":
- {
- "i18n": "drawioMacro",
- "value": "Legacy macro - do not use"
- },
- "url": "/connect/confluence/viewer.html?ceoId=${page.id}&diagramName=${diagramName}&revision=${revision}&width=${width}&height=${height}",
- "width": "100%",
- "description":
- {
- "i18n": "description",
- "value": "Do not use"
- }, "icon":
- {
- "width": 80,
- "height": 80,
- "url": "/images/stop-flat-icon-80.png"
- },
- "categories": [
- "visuals"
- ],
- "outputType": "block",
- "featured": false,
- "key": "drawio-macro",
- "parameters":
- [
- {
- "identifier": "diagramName",
- "name":
- {
- "value": "Diagram name (do not change)"
- },
- "type": "string"
- },
- {
- "identifier": "autoSize",
- "name":
- {
- "value": "automatic size"
- },
- "type": "boolean"
- },
- {
- "identifier": "PageId",
- "name":
- {
- "value": "Parent page ID"
- },
- "type": "string"
- },
- {
- "identifier": "baseUrl",
- "name":
- {
- "value": "Confluence Base URL"
- },
- "type": "string"
- },
- {
- "identifier": "width",
- "name":
- {
- "value": "Diagram width"
- },
- "type": "string"
- },
- {
- "identifier": "height",
- "name":
- {
- "value": "Diagram Height"
- },
- "type": "string"
- }
- ],
- "editor": {
- "url": "/connect/confluence/macroEditor.html?ceoId=${page.id}&diagramName=${diagramName}",
- "editTitle": {
- "value": "Edit MarkDown",
- "i18n": "macro.md.edit"
- },
- "insertTitle": {
- "value": "Insert New MarkDown",
- "i18n": "macro.md.insert"
- },
- "width": "100%",
- "height": "100%"
- },
- "imagePlaceholder": {
- "width": 500,
- "height": 300,
- "url": "/connectImage",
- "applyChrome": true
- },
- "renderModes": {
- "default": {
- "url": "/connectRender?pageId=${page.id}&diagramName=${diagramName}&revision=${revision}"
- }
- }
- }
- ]
- },
- "scopes": [
- "read",
- "write",
- "delete"
- ]
-} \ No newline at end of file
diff --git a/src/main/webapp/connect/confluence/connect.json b/src/main/webapp/connect/confluence/connect.json
index 4c698cec..2751c51d 100644
--- a/src/main/webapp/connect/confluence/connect.json
+++ b/src/main/webapp/connect/confluence/connect.json
@@ -19,6 +19,15 @@
},
"modules":
{
+ "adminPages": [
+ {
+ "key": "gliffyImport",
+ "url": "/connect/confluence/admin.html",
+ "name": {
+ "value": "Gliffy - draw.io Conversion"
+ }
+ }
+ ],
"generalPages": [
{
"key": "lightbox",
diff --git a/src/main/webapp/connect/confluence/connectUtils-1-4-8.js b/src/main/webapp/connect/confluence/connectUtils-1-4-8.js
index eec19263..4543d009 100644
--- a/src/main/webapp/connect/confluence/connectUtils-1-4-8.js
+++ b/src/main/webapp/connect/confluence/connectUtils-1-4-8.js
@@ -1172,15 +1172,103 @@ AC.init = function(baseUrl, location, pageId, editor, diagramName, initialXml, d
});
};
-AC.loadDiagram = function (pageId, diagramName, revision, success, error, owningPageId, tryRev1) {
+AC.loadDiagram = function (pageId, diagramName, revision, success, error, owningPageId, tryRev1, dontCheckVer) {
// TODO: Get binary
- AP.require('request', function(request) {
+ AP.require(['request', 'confluence'], function(request, confluence) {
+ //Confirm that the macro is in sync with the diagram
+ //Sometimes the diagram is saved but the macro is not updated
+ var attInfo = null;
+ var pageInfo = null;
+
+ function confirmDiagramInSync()
+ {
+ if (attInfo == null || pageInfo == null)
+ return;
+
+ //TODO is this condition enough or we need to check timestamps also?
+ if (attInfo.version.number > revision
+ && (pageInfo.version.message == null || pageInfo.version.message.indexOf("Reverted") < 0))
+ {
+ AC.loadDiagram(pageId, diagramName, attInfo.version.number, success, error, owningPageId, tryRev1, true);
+ //Update the macro
+ //Custom Content version will be fixed on next save, this will not affect correctness
+ confluence.getMacroData(function (macroData)
+ {
+ if (macroData != null)
+ {
+ confluence.saveMacro(
+ {
+ diagramName: macroData.diagramName,
+ revision: attInfo.version.number,
+ pageId: macroData.pageId,
+ contentId: macroData.contentId,
+ contentVer: macroData.contentVer,
+ baseUrl: macroData.baseUrl,
+ width: macroData.width,
+ height: macroData.height,
+ tbstyle: macroData.tbstyle,
+ links: macroData.links,
+ lbox: macroData.lbox != null ? macroData.lbox : '1',
+ zoom: macroData.zoom != null ? macroData.zoom : '1'
+ });
+ }
+ });
+ }
+ }
+
+ //To avoid race we do the version check after loading the diagram in the macro
+ var localSuccess = function()
+ {
+ success.apply(this, arguments);
+
+ if (!dontCheckVer && revision != null)
+ {
+ request({
+ type: 'GET',
+ url: '/rest/api/content/' + pageId + '?expand=version',
+ contentType: 'application/json;charset=UTF-8',
+ success: function (resp)
+ {
+ pageInfo = JSON.parse(resp);
+
+ confirmDiagramInSync();
+ },
+ error: function (resp)
+ {
+ //Ignore
+ }
+ });
+
+ request({
+ type: 'GET',
+ url: '/rest/api/content/' + pageId + '/child/attachment?filename=' +
+ encodeURIComponent(diagramName) + '&expand=version',
+ contentType: 'application/json;charset=UTF-8',
+ success: function (resp)
+ {
+ var tmp = JSON.parse(resp);
+
+ if (tmp.results && tmp.results.length == 1)
+ {
+ attInfo = tmp.results[0];
+ }
+
+ confirmDiagramInSync();
+ },
+ error: function (resp)
+ {
+ //Ignore
+ }
+ });
+ }
+ }
+
request({
//TODO find out the ID of the page that actually holds the attachments because historical revisions do not have attachments
url: '/download/attachments/' + pageId + '/' + encodeURIComponent(diagramName) +
((revision != null) ? '?version=' + revision : ''),
- success: success,
+ success: localSuccess,
error : function(resp)
{
//When a page is copied, attachments are reset to version 1 while the revision parameter remains the same
@@ -1188,14 +1276,14 @@ AC.loadDiagram = function (pageId, diagramName, revision, success, error, owning
{
request({
url: '/download/attachments/' + pageId + '/' + encodeURIComponent(diagramName),
- success: success,
+ success: localSuccess,
error : function(resp) { //If revesion 1 failed, then try the owningPageId
if (owningPageId && resp.status == 404)
{
request({
url: '/download/attachments/' + owningPageId + '/' + encodeURIComponent(diagramName)
+'?version=' + revision, //this version should exists in the original owning page
- success: success,
+ success: localSuccess,
error : error
});
}
@@ -1206,7 +1294,7 @@ AC.loadDiagram = function (pageId, diagramName, revision, success, error, owning
{
request({
url: '/download/attachments/' + owningPageId + '/' + encodeURIComponent(diagramName),
- success: success,
+ success: localSuccess,
error : error
});
}
@@ -1268,6 +1356,18 @@ AC.saveCustomContent = function(spaceKey, pageId, pageType, diagramName, revisio
{
AC.saveCustomContent(spaceKey, pageId, pageType, diagramName, revision, null, null, success, error);
}
+ //Sometimes the macro is not updated such that the version is not correct. The same happens when a page version is restored
+ else if (err.statusCode == 409 && err.message.indexOf("Current version is:") > 0)
+ {
+ //We will use the error message to detect the correct version instead of doing another request.
+ //It should be safe as long as error messages are not translated or changed
+ var curContentVer = err.message.match(/\d+/);
+
+ if (curContentVer != null)
+ {
+ AC.saveCustomContent(spaceKey, pageId, pageType, diagramName, revision, contentId, curContentVer[0], success, error);
+ }
+ }
else
{
error(resp);
diff --git a/src/main/webapp/connect/confluence/macroEditor-1-4-8.html b/src/main/webapp/connect/confluence/macroEditor-1-4-8.html
index b40b8b31..8bf6ae5e 100644
--- a/src/main/webapp/connect/confluence/macroEditor-1-4-8.html
+++ b/src/main/webapp/connect/confluence/macroEditor-1-4-8.html
@@ -38,7 +38,7 @@
if (license != null && license == 'none')
{
- if (xdm_e != null && (xdm_e == "https://drawio.atlassian.net" || xdm_e.indexOf('ngrok') > -1))
+ if (xdm_e != null && (xdm_e == "https://drawio.atlassian.net" || xdm_e.indexOf('ngrok') > -1 || xdm_e.indexOf('incura') > -1))
{
console.log("License status = ", license);
}
diff --git a/src/main/webapp/connect/confluence/macroEditor.html b/src/main/webapp/connect/confluence/macroEditor.html
index 4df63394..7c34c335 100644
--- a/src/main/webapp/connect/confluence/macroEditor.html
+++ b/src/main/webapp/connect/confluence/macroEditor.html
@@ -34,6 +34,8 @@
var script = document.createElement('script');
script.setAttribute('data-options', 'resize:false;margin:false');
+ alert("Unsupported draw.io version, please upgrade.");
+
// Main
script.onload = function()
{
diff --git a/src/main/webapp/connect/confluence/viewer-1-4-8.html b/src/main/webapp/connect/confluence/viewer-1-4-8.html
index 7237be4f..d01eeafd 100644
--- a/src/main/webapp/connect/confluence/viewer-1-4-8.html
+++ b/src/main/webapp/connect/confluence/viewer-1-4-8.html
@@ -233,11 +233,19 @@ if (lang != null)
}
else
{
+ //In case we want to load another diagram
+ var oldContainer = document.getElementById("drawIODiagram");
+
+ if (oldContainer != null)
+ {
+ oldContainer.parentNode.removeChild(oldContainer);
+ }
// LATER: Fix horizontal alignment ignored with 100% width of iframe
// LATER: Fix page scrolling on touch device if trigger event on diagram
// LATER: Hide toolbar after second container click for iOS
// LATER: Disable responsive resize while lightbox shows
var container = document.createElement('div');
+ container.id = "drawIODiagram";
container.style.cssText = 'position:absolute;box-sizing:border-box;' +
'max-width:100%;border:1px solid transparent;';
document.body.appendChild(container);
@@ -322,6 +330,68 @@ if (lang != null)
};
}
+ //Confirm that the macro is in sync with the diagram
+ //Sometimes the diagram is saved but the macro is not updated
+ var attInfo = null;
+ var pageInfo = null;
+
+ function confirmDiagramInSync()
+ {
+ if (attInfo == null || pageInfo == null)
+ return;
+
+ var loadedVer = parseInt(revision);
+
+ //TODO is this condition enough or we need to check timestamps also?
+ if (attInfo.version.number > loadedVer
+ && (pageInfo.version.message == null || pageInfo.version.message.indexOf("Reverted") < 0))
+ {
+ showDiagram(id, backupId, name, attInfo.version.number + '', page, links, {dontCheckVer: true});
+ //I think updating macro here is too risky since calling confluence.getMacroData returns null
+ }
+ }
+
+ if (!retryParams.dontCheckVer && revision != null && revision.length > 0)
+ {
+ request({
+ type: 'GET',
+ url: '/rest/api/content/' + id + '?expand=version',
+ contentType: 'application/json;charset=UTF-8',
+ success: function (resp)
+ {
+ pageInfo = JSON.parse(resp);
+
+ confirmDiagramInSync();
+ },
+ error: function (resp)
+ {
+ //Ignore
+ }
+ });
+
+ request({
+ type: 'GET',
+ url: '/rest/api/content/' + id + '/child/attachment?filename=' +
+ encodeURIComponent(name) + '&expand=version',
+ contentType: 'application/json;charset=UTF-8',
+ success: function (resp)
+ {
+ var tmp = JSON.parse(resp);
+
+ if (tmp.results && tmp.results.length == 1)
+ {
+ attInfo = tmp.results[0];
+ }
+
+ confirmDiagramInSync();
+ },
+ error: function (resp)
+ {
+ //Ignore
+ }
+ });
+ }
+
//Saving the diagram to this page negates page linking feature!
//May be we should ask the user first or saving is not needed all together
/*if (retryParams.saveIt)
@@ -401,7 +471,7 @@ if (lang != null)
var info = JSON.parse(decodeURIComponent(resp.body.storage.value));
- showDiagram(info.pageId, info.pageId, info.diagramName, info.version, null, links);
+ showDiagram(info.pageId, info.pageId, info.diagramName, info.version, null, links, {dontCheckVer: true}); //custom content can load old versions which will be overridden by version check
},
error: function (resp)
{
diff --git a/src/main/webapp/connect/jira/connect-dev.json b/src/main/webapp/connect/jira/connect-dev.json
deleted file mode 100644
index 16c3f277..00000000
--- a/src/main/webapp/connect/jira/connect-dev.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "name": "Draw.io gaudenz",
- "description": "Draw.io add-on for JIRA",
- "key": "com.mxgraph.jira.plugins.drawio.gaudenz",
- "baseUrl": "https://0d961297.ngrok.io/",
- "vendor": {
- "name": "JGraph Ltd.",
- "url": "https://www.jgraph.com"
- },
- "authentication":
- {
- "type": "none"
- },
- "version": "1.0.4",
- "scopes":
- [
- "READ",
- "WRITE",
- "DELETE"
- ],
- "modules":
- {
- "generalPages":
- [
- {
- "url":"/connect/jira/editor2.html?issueId=${issue.id}",
- "key":"drawioEditor",
- "name":
- {
- "value":"Draw.io Editor"
- },
- "location":"hidden"
- },
- {
- "url":"/connect/jira/fullScreenViewer2.html?issueId=${issue.id}",
- "key":"drawioFullScreenViewer",
- "name":
- {
- "value":"Draw.io Full Screen Viewer"
- },
- "location":"hidden"
- }
- ],
- "webItems": [
- {
- "location": "operations-attachments",
- "weight": 50,
- "key": "drawioEditorBlank",
- "url": "/connect/jira/editor2.html?issueId=${issue.id}",
- "name": {
- "value": "Add Draw.io Diagram"
- },
- "target":
- {
- "type":"dialog",
- "options":
- {
- "width":"100%",
- "height":"100%",
- "chrome":false
- }
- }
- },
- {
- "key": "drawioEditorDialog",
- "name":
- {
- "value": "Draw.io Editor"
- },
- "url": "/connect/jira/editor2.html?issueId=${issue.id}",
- "location": "none",
- "context": "addon"
- }
- ],
- "webPanels":
- [
- {
- "url": "/connect/jira/viewerPanel2.html?issueId=${issue.id}",
- "location": "atl.jira.view.issue.right.context",
- "layout":
- {
- "width": "300px"
- },
- "weight": 50,
- "key": "drawioViewerPanel",
- "name":
- {
- "value": "Draw.io Diagrams"
- }
- }
- ]
- }
- } \ No newline at end of file
diff --git a/src/main/webapp/images/logo-quip.png b/src/main/webapp/images/logo-quip.png
new file mode 100644
index 00000000..6d8986ae
--- /dev/null
+++ b/src/main/webapp/images/logo-quip.png
Binary files differ
diff --git a/src/main/webapp/images/sidebar-basic.png b/src/main/webapp/images/sidebar-basic.png
index a7054dd7..3b2b363a 100644
--- a/src/main/webapp/images/sidebar-basic.png
+++ b/src/main/webapp/images/sidebar-basic.png
Binary files differ
diff --git a/src/main/webapp/images/sidebar-flowchart.png b/src/main/webapp/images/sidebar-flowchart.png
index 2ca3d991..46ecf664 100644
--- a/src/main/webapp/images/sidebar-flowchart.png
+++ b/src/main/webapp/images/sidebar-flowchart.png
Binary files differ
diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html
index bfff74b7..950766ef 100644
--- a/src/main/webapp/index.html
+++ b/src/main/webapp/index.html
@@ -397,10 +397,10 @@
width="26" height="20" src="images/youtube.png"/>Quick Start Video</a>
</td>
<td id="geFooterItem1" align="center" style="width:260px;">
- <a id="geFooterLink1" title="#1 Rated Confluence Add-on" target="_blank"
- href="https://about.draw.io/integrations/confluence-integration/">
+ <a id="geFooterLink1" title="draw.io for Quip" target="_blank"
+ href="https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FH8dSUAT">
<img border="0" width="24" height="24" align="absmiddle" style="padding-right:10px;"
- src="images/logo-confluence.png"/>#1 Rated Confluence App
+ src="images/logo-quip.png"/>Announcing draw.io for Quip
</a>
</td>
</tr>
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 461ba6a6..68899de8 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -3879,15 +3879,20 @@ this.createVertexTemplateEntry(a+"unidentified_code_object;",50,42.5,"","Unident
120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;top=0;left=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry(a+"4_point_star_2;dx=0.8;",100,100,"","4 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","4_point_star","").join(" ")),this.createVertexTemplateEntry(a+
"6_point_star",100,90,"","6 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","6_point_star","").join(" ")),this.createVertexTemplateEntry(a+"8_point_star",100,100,"","8 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","8_point_star","").join(" ")),this.createVertexTemplateEntry(a+"banner",100,50,"","Banner",null,null,this.getTagsForStencil("mxgraph.basic","banner","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.cloud_callout",
90,60,"","Cloud Callout",null,null,this.getTagsForStencil("mxgraph.basic","cloud_callout","").join(" ")),this.createVertexTemplateEntry(a+"cone",100,100,"","Cone",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),this.createVertexTemplateEntry(a+"cone2;dx=0.5;dy=0.9;",100,100,"","Cone (adjustable)",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.document",100,100,"",
-"Document",null,null,this.getTagsForStencil("mxgraph.basic","document","").join(" ")),this.createVertexTemplateEntry(a+"drop",70,100,"","Drop",null,null,this.getTagsForStencil("mxgraph.basic","drop","").join(" ")),this.createVertexTemplateEntry(a+"flash",60,100,"","Flash",null,null,this.getTagsForStencil("mxgraph.basic","flash","").join(" ")),this.createVertexTemplateEntry(a+"half_circle",100,50,"","Half Circle",null,null,this.getTagsForStencil("mxgraph.basic","half_circle","").join(" ")),this.createVertexTemplateEntry(a+
-"heart",100,100,"","Heart",null,null,this.getTagsForStencil("mxgraph.basic","heart","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.isocube;isoAngle=15;",100,100,"","Isometric Cube",null,null,this.getTagsForStencil("mxgraph.basic","isometric cube","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.loud_callout",100,60,"","Loud Callout",null,null,this.getTagsForStencil("mxgraph.basic","loud_callout",
-"").join(" ")),this.createVertexTemplateEntry(a+"moon",75,100,"","Moon",null,null,this.getTagsForStencil("mxgraph.basic","moon","").join(" ")),this.createVertexTemplateEntry(a+"no_symbol",100,100,"","No Symbol",null,null,this.getTagsForStencil("mxgraph.basic","no_symbol","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.octagon2;align=center;verticalAlign=middle;dx=15;",100,100,"","Octagon",null,null,this.getTagsForStencil("mxgraph.basic","octagon",
-"").join(" ")),this.createVertexTemplateEntry(a+"orthogonal_triangle",100,70,"","Orthogonal Triangle",null,null,this.getTagsForStencil("mxgraph.basic","orthogonal_triangle","").join(" ")),this.createVertexTemplateEntry(a+"acute_triangle;dx=0.5;",100,70,"","Acute Triangle",null,null,this.getTagsForStencil("mxgraph.basic","acute_triangle","").join(" ")),this.createVertexTemplateEntry(a+"obtuse_triangle;dx=0.25;",100,70,"","Obtuse Triangle",null,null,this.getTagsForStencil("mxgraph.basic","obtuse_triangle",
-"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.oval_callout",100,60,"","Oval Callout",null,null,this.getTagsForStencil("mxgraph.basic","oval_callout","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pentagon",100,90,"","Pentagon",null,null,this.getTagsForStencil("mxgraph.basic","pentagon","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pointed_oval",
-50,100,"","Pointed Oval",null,null,this.getTagsForStencil("mxgraph.basic","pointed oval","").join(" ")),this.createVertexTemplateEntry(a+"pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;",100,100,"","Pyramid",null,null,this.getTagsForStencil("mxgraph.basic","pyramid","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.rectCallout;dx=30;dy=15;boundedLbl=1;",100,60,"","Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout",
-"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;",100,60,"","Rounded Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry(a+"smiley",100,100,"","Smiley",null,null,this.getTagsForStencil("mxgraph.basic","smiley","").join(" ")),this.createVertexTemplateEntry(a+"star",100,95,"","Star",null,null,this.getTagsForStencil("mxgraph.basic",
-"star","").join(" ")),this.createVertexTemplateEntry(a+"sun",100,100,"","Sun",null,null,this.getTagsForStencil("mxgraph.basic","sun","").join(" ")),this.createVertexTemplateEntry(a+"tick",85,100,"","Tick",null,null,this.getTagsForStencil("mxgraph.basic","tick","").join(" ")),this.createVertexTemplateEntry(a+"wave2;dy=0.3;",100,60,"","Wave",null,null,this.getTagsForStencil("mxgraph.basic","wave","").join(" ")),this.createVertexTemplateEntry(a+"x",100,100,"","X",null,null,this.getTagsForStencil("mxgraph.basic",
-"x","").join(" "))])}})();(function(){Sidebar.prototype.addBootstrapPalette=function(){var a=this,e=[this.addDataEntry("bootstrap button bar dark",800,40,"Button Bar (Dark)","5ZhRb5swEMc/DY+NDKaEvIZ2fdm0qpH27gUDVg2HjNuQfvod2EnJnGxRWqJUsRQJn332+ffnbBOPJmX7oFhd/ICUS4/eezRRANo8lW3CpfQCIlKP3nlBQPDnBd8OtPp9K6mZ4pU+xiEwDq9MvnBjMYZGr6U1FLrEsO58j86bgqWwwgrBSsqagqe2gi11179s824tk9+4gkbj40TxJUYyz4SUCUhQ/aA06EvnqBU8801LBRWOMl8VQvNFzZbdkCscBW02UK40bw8utjfZlT5wKLlWa+yyEqkuTI+YGCCk4CIvrFtobawx9Xzr+o4OHyy9/SSpQzKBsmbV+jSgQ16Wyl5U/wcPlR6An/XF2hfirfP1w48wD45gPg7y0EH+yKFGzGd5hUlfDunyF/asL11nJCyq/MmSoGQE9O0u9oESs5GUuHWUiMNPV8HKoOxbG7uSZNkpkpyMP/wnfuuwttvw5NZRY4NtqIYfGZvikmnxynfG2ieRnf8RBIa1nfyGkp3pb+LdESDLGq4diberOEr1yFH9l4AubKiaC931zph+/tTNP98fKQGnjhTh55/kF5eA0ZUnYOyovtAYdKPF8lITcKRk23fYjXXtmLnUuda4q1wZcxq5zKcjMd/sm8O7ngIkd+Jl76syj87J3HeYf4ccDT9f9HVRn9LRqGP1/WvfHAHDPwP+AA=="),
+"Document",null,null,this.getTagsForStencil("mxgraph.basic","document","").join(" ")),this.createVertexTemplateEntry(a+"donut;dx=25;",100,100,"","Donut",null,null,this.getTagsForStencil("mxgraph.basic","donut","").join(" ")),this.createVertexTemplateEntry(a+"drop",70,100,"","Drop",null,null,this.getTagsForStencil("mxgraph.basic","drop","").join(" ")),this.createVertexTemplateEntry(a+"flash",60,100,"","Flash",null,null,this.getTagsForStencil("mxgraph.basic","flash","").join(" ")),this.createVertexTemplateEntry(a+
+"half_circle",100,50,"","Half Circle",null,null,this.getTagsForStencil("mxgraph.basic","half_circle","").join(" ")),this.createVertexTemplateEntry(a+"heart",100,100,"","Heart",null,null,this.getTagsForStencil("mxgraph.basic","heart","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.isocube;isoAngle=15;",100,100,"","Isometric Cube",null,null,this.getTagsForStencil("mxgraph.basic","isometric cube","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.loud_callout",
+100,60,"","Loud Callout",null,null,this.getTagsForStencil("mxgraph.basic","loud_callout","").join(" ")),this.createVertexTemplateEntry(a+"moon",75,100,"","Moon",null,null,this.getTagsForStencil("mxgraph.basic","moon","").join(" ")),this.createVertexTemplateEntry(a+"no_symbol",100,100,"","No Symbol",null,null,this.getTagsForStencil("mxgraph.basic","no_symbol","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.octagon2;align=center;verticalAlign=middle;dx=15;",
+100,100,"","Octagon",null,null,this.getTagsForStencil("mxgraph.basic","octagon","").join(" ")),this.createVertexTemplateEntry(a+"orthogonal_triangle",100,70,"","Orthogonal Triangle",null,null,this.getTagsForStencil("mxgraph.basic","orthogonal_triangle","").join(" ")),this.createVertexTemplateEntry(a+"acute_triangle;dx=0.5;",100,70,"","Acute Triangle",null,null,this.getTagsForStencil("mxgraph.basic","acute_triangle","").join(" ")),this.createVertexTemplateEntry(a+"obtuse_triangle;dx=0.25;",100,70,
+"","Obtuse Triangle",null,null,this.getTagsForStencil("mxgraph.basic","obtuse_triangle","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.oval_callout",100,60,"","Oval Callout",null,null,this.getTagsForStencil("mxgraph.basic","oval_callout","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pentagon",100,90,"","Pentagon",null,null,this.getTagsForStencil("mxgraph.basic","pentagon","").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pointed_oval",50,100,"","Pointed Oval",null,null,this.getTagsForStencil("mxgraph.basic","pointed oval","").join(" ")),this.createVertexTemplateEntry(a+"pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;",100,100,"","Pyramid",null,null,this.getTagsForStencil("mxgraph.basic","pyramid","").join(" ")),this.createVertexTemplateEntry(a+"diag_snip_rect;dx=6;",100,60,"","Diagonal Snip Rectangle",null,null,this.getTagsForStencil("mxgraph.basic",
+"diag_snip_rect","").join(" ")),this.createVertexTemplateEntry(a+"diag_round_rect;dx=6;",100,60,"","Diagonal Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","diag_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"corner_round_rect;dx=6;",100,60,"","Corner Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","corner_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"plaque;dx=6;",100,60,"","Plaque",null,null,this.getTagsForStencil("mxgraph.basic",
+"plaque","").join(" ")),this.createVertexTemplateEntry(a+"frame;dx=10;",100,60,"","Frame",null,null,this.getTagsForStencil("mxgraph.basic","frame","").join(" ")),this.createVertexTemplateEntry(a+"rounded_frame;dx=10;",100,60,"","Rounded Frame",null,null,this.getTagsForStencil("mxgraph.basic","rounded_frame","").join(" ")),this.createVertexTemplateEntry(a+"plaque_frame;dx=10;",100,60,"","Plaque Frame",null,null,this.getTagsForStencil("mxgraph.basic","plaque_frame","").join(" ")),this.createVertexTemplateEntry(a+
+"frame_corner;dx=10;",100,60,"","Frame Corner",null,null,this.getTagsForStencil("mxgraph.basic","frame_corner","").join(" ")),this.createVertexTemplateEntry(a+"diag_stripe;dx=10;",100,60,"","Diagonal Stripe",null,null,this.getTagsForStencil("mxgraph.basic","diag_stripe","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.rectCallout;dx=30;dy=15;boundedLbl=1;",100,60,"","Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout",
+"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;",100,60,"","Rounded Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry(a+"layered_rect;dx=10;",100,60,"","Layered Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","layered_rect","").join(" ")),this.createVertexTemplateEntry(a+"smiley",100,100,"","Smiley",
+null,null,this.getTagsForStencil("mxgraph.basic","smiley","").join(" ")),this.createVertexTemplateEntry(a+"star",100,95,"","Star",null,null,this.getTagsForStencil("mxgraph.basic","star","").join(" ")),this.createVertexTemplateEntry(a+"sun",100,100,"","Sun",null,null,this.getTagsForStencil("mxgraph.basic","sun","").join(" ")),this.createVertexTemplateEntry(a+"tick",85,100,"","Tick",null,null,this.getTagsForStencil("mxgraph.basic","tick","").join(" ")),this.createVertexTemplateEntry(a+"wave2;dy=0.3;",
+100,60,"","Wave",null,null,this.getTagsForStencil("mxgraph.basic","wave","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.button;dx=10;",100,60,"Button","Button",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.shaded_button;dx=10;fillColor=#E6E6E6;strokeColor=none;",
+100,60,"Button","Button (shaded)",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry(a+"x",100,100,"","X",null,null,this.getTagsForStencil("mxgraph.basic","x","").join(" ")),this.createVertexTemplateEntry(a+"pie;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null,null,this.getTagsForStencil("mxgraph.basic","pie","").join(" ")),this.createVertexTemplateEntry(a+"arc;startAngle=0.3;endAngle=0.1;",100,100,"","Arc",null,null,this.getTagsForStencil("mxgraph.basic",
+"arc","").join(" ")),this.createVertexTemplateEntry(a+"partConcEllipse;startAngle=0.25;endAngle=0.1;arcWidth=0.5;",100,100,"","Partial Concentric Ellipse",null,null,this.getTagsForStencil("mxgraph.basic","partConcEllipse","").join(" "))])}})();(function(){Sidebar.prototype.addBootstrapPalette=function(){var a=this,e=[this.addDataEntry("bootstrap button bar dark",800,40,"Button Bar (Dark)","5ZhRb5swEMc/DY+NDKaEvIZ2fdm0qpH27gUDVg2HjNuQfvod2EnJnGxRWqJUsRQJn332+ffnbBOPJmX7oFhd/ICUS4/eezRRANo8lW3CpfQCIlKP3nlBQPDnBd8OtPp9K6mZ4pU+xiEwDq9MvnBjMYZGr6U1FLrEsO58j86bgqWwwgrBSsqagqe2gi11179s824tk9+4gkbj40TxJUYyz4SUCUhQ/aA06EvnqBU8801LBRWOMl8VQvNFzZbdkCscBW02UK40bw8utjfZlT5wKLlWa+yyEqkuTI+YGCCk4CIvrFtobawx9Xzr+o4OHyy9/SSpQzKBsmbV+jSgQ16Wyl5U/wcPlR6An/XF2hfirfP1w48wD45gPg7y0EH+yKFGzGd5hUlfDunyF/asL11nJCyq/MmSoGQE9O0u9oESs5GUuHWUiMNPV8HKoOxbG7uSZNkpkpyMP/wnfuuwttvw5NZRY4NtqIYfGZvikmnxynfG2ieRnf8RBIa1nfyGkp3pb+LdESDLGq4diberOEr1yFH9l4AubKiaC931zph+/tTNP98fKQGnjhTh55/kF5eA0ZUnYOyovtAYdKPF8lITcKRk23fYjXXtmLnUuda4q1wZcxq5zKcjMd/sm8O7ngIkd+Jl76syj87J3HeYf4ccDT9f9HVRn9LRqGP1/WvfHAHDPwP+AA=="),
this.addDataEntry("bootstrap button bar bright",800,40,"Button Bar (Bright)","5ZdRb5swEMc/DY9FBhNCXkPavmxStUh798IB1gxGxmvIPv0OcBKoSZetpYpUIyT77DP278+dwaFx0TwqVuVfZQLCofcOjZWUuq8VTQxCOD7hiUM3ju8TvB3/4UKv1/WSiiko9TUOfu/wzMQv6C29odYHYQy5LnBZG8+h6zpnidxjg2AjYXUOiWlgT9WOL5qs3Yv7A3dQa6y6Cna4knXKhYilkKqblKZhe7WOWsmfcOwpZYmzrPc517Ct2K6dco+zoM0sFJSG5uJmO5PZ6SPIArQ64JA9T3Tej4hID4TkwLPcuAXGxuq+nZ1cz+iwYuhNk6QWyVgWFSsP/wd0yMtQmUT1d/Cy1APwSVeMfct/t75e8Bbm/hXM50EeWMifQFaI+WNeYdJel3R5gX3VlXYwEuZl9s2QoGQG9M0Y+0CJ1UxKLCwlouDdVTAyKPPWRhOSpATLlZKkXXkL/uBV/MbhYNKwu7DUOGIbquGFvU2BYJo/w2iuKYnM858kx2WdHn5Hyejxd9F4BpmmNWhL4tMurlI9tFT/zmW7bFnWN5r1PjD8vKUdf543UwAuLSmC9z/Jby4Aw08egJGl+lbjomvNd7cagDMF29RhN9dnx8qmDlpjVvlkzGloM1/OxPyYN0fQmdrlruvOnecWU3nOpK6xUC+/r6fsTPCsRJuAVJ8PpC9da+PNeB6Fi3FGstOhRyfUo/+uHjbPf7B9Whv+4P4B"),
this.addEntry("bootstrap button group vertical",function(){var d=new mxCell("",new mxGeometry(0,0,100,150),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;html=1;whiteSpace=wrap;fillColor=#ffffff;");d.vertex=!0;var b=new mxCell("Edit",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;perimeter=none;whiteSpace=wrap;resizeWidth=1;");b.geometry.relative=!0;b.vertex=
!0;d.insert(b);b=new mxCell("Create",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;resizeWidth=1;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(0,30);b.vertex=!0;d.insert(b);var c=new mxCell("Delete",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;resizeWidth=1;");
@@ -4585,20 +4590,20 @@ function(){var e=new mxCell("",new mxGeometry(20,20,520,100),"shape=ellipse;shad
new mxCell("",new mxGeometry(110,0,40,43),a+"office_chair;shadow=0;");g.vertex=!0;var k=new mxCell("",new mxGeometry(110,97,40,43),a+"office_chair;shadow=0;direction=west;");k.vertex=!0;var m=new mxCell("",new mxGeometry(170,0,40,43),a+"office_chair;shadow=0;");m.vertex=!0;var l=new mxCell("",new mxGeometry(170,97,40,43),a+"office_chair;shadow=0;direction=west;");l.vertex=!0;var r=new mxCell("",new mxGeometry(230,0,40,43),a+"office_chair;shadow=0;");r.vertex=!0;var n=new mxCell("",new mxGeometry(230,
97,40,43),a+"office_chair;shadow=0;direction=west;");n.vertex=!0;var p=new mxCell("",new mxGeometry(290,0,40,43),a+"office_chair;shadow=0;");p.vertex=!0;var q=new mxCell("",new mxGeometry(290,97,40,43),a+"office_chair;shadow=0;direction=west;");q.vertex=!0;var w=new mxCell("",new mxGeometry(350,0,40,43),a+"office_chair;shadow=0;");w.vertex=!0;var v=new mxCell("",new mxGeometry(350,97,40,43),a+"office_chair;shadow=0;direction=west;");v.vertex=!0;var y=new mxCell("",new mxGeometry(410,0,40,43),a+"office_chair;shadow=0;");
y.vertex=!0;var x=new mxCell("",new mxGeometry(410,97,40,43),a+"office_chair;shadow=0;direction=west;");x.vertex=!0;var u=new mxCell("",new mxGeometry(470,0,40,43),a+"office_chair;shadow=0;");u.vertex=!0;var t=new mxCell("",new mxGeometry(470,97,40,43),a+"office_chair;shadow=0;direction=west;");t.vertex=!0;return sb.createVertexTemplateFromCells([b,c,h,f,g,k,m,l,r,n,p,q,w,v,y,x,u,t,e],560,140,"Conference table")})];this.addPalette("floorplan",mxResources.get("floorplans"),!1,mxUtils.bind(this,function(a){for(var b=
-0;b<e.length;b++)a.appendChild(e[b](a))}))}})();(function(){Sidebar.prototype.addFlowchartPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.flowchart.";this.addPaletteFunctions("flowchart",mxResources.get("flowchart"),!1,[this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;",50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_2;align=left;",
-50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_2","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.card;whiteSpace=wrap;",100,60,"","Card",null,null,this.getTagsForStencil("mxgraph.flowchart","card","").join(" ")),this.createVertexTemplateEntry(a+"collate;",100,100,"","Collate",null,null,this.getTagsForStencil("mxgraph.flowchart","collate","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.data;whiteSpace=wrap;",
-100,60,"","Data",null,null,this.getTagsForStencil("mxgraph.flowchart","data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;",60,60,"","Database",null,null,this.getTagsForStencil("mxgraph.flowchart","database","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;",100,100,"","Decision",null,null,this.getTagsForStencil("mxgraph.flowchart","decision","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.delay;whiteSpace=wrap;",
-100,60,"","Delay",null,null,this.getTagsForStencil("mxgraph.flowchart","delay","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.direct_data;whiteSpace=wrap;",100,60,"","Direct Data",null,null,this.getTagsForStencil("mxgraph.flowchart","direct_data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.display;whiteSpace=wrap;",100,60,"","Display",null,null,this.getTagsForStencil("mxgraph.flowchart","display","").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.document;whiteSpace=wrap;",100,60,"","Document",null,null,this.getTagsForStencil("mxgraph.flowchart","document","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.extract_or_measurement;whiteSpace=wrap;",95,60,"","Extract or Measurement",null,null,this.getTagsForStencil("mxgraph.flowchart","extract_or_measurement","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.internal_storage;whiteSpace=wrap;",
-70,70,"","Internal Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","internal_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.loop_limit;whiteSpace=wrap;",100,60,"","Loop Limit",null,null,this.getTagsForStencil("mxgraph.flowchart","loop_limit","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.manual_input;whiteSpace=wrap;",100,60,"","Manual Input",null,null,this.getTagsForStencil("mxgraph.flowchart",
-"manual_input","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.manual_operation;whiteSpace=wrap;",100,60,"","Manual Operation",null,null,this.getTagsForStencil("mxgraph.flowchart","manual_operation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.merge_or_storage;whiteSpace=wrap;",95,60,"","Merge or Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","merge_or_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.multi-document;whiteSpace=wrap;",
-88,60,"","Multi-Document",null,null,this.getTagsForStencil("mxgraph.flowchart","multi-document","").join(" ")),this.createVertexTemplateEntry(a+"off-page_reference;",60,60,"","Off-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","off-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"on-page_reference;",60,60,"","On-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","on-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"summing_function;",
-70,70,"","Or",null,null,this.getTagsForStencil("mxgraph.flowchart","summing_function","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.paper_tape;whiteSpace=wrap;",100,65,"","Paper Tape",null,null,this.getTagsForStencil("mxgraph.flowchart","paper_tape","").join(" ")),this.createVertexTemplateEntry(a+"parallel_mode;",95,40,"","Parallel Mode",null,null,this.getTagsForStencil("mxgraph.flowchart","parallel_mode","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.predefined_process;whiteSpace=wrap;",
-100,60,"","Predefined Process",null,null,this.getTagsForStencil("mxgraph.flowchart","predefined_process","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.preparation;whiteSpace=wrap;",100,60,"","Preparation",null,null,this.getTagsForStencil("mxgraph.flowchart","preparation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.process;whiteSpace=wrap;",100,100,"","Process",null,null,this.getTagsForStencil("mxgraph.flowchart",
-"process","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.sequential_data;whiteSpace=wrap;",100,100,"","Sequential Data",null,null,this.getTagsForStencil("mxgraph.flowchart","sequential_data","").join(" ")),this.createVertexTemplateEntry(a+"sort;",100,100,"","Sort",null,null,this.getTagsForStencil("mxgraph.flowchart","sort","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;",100,60,"","Start",
-null,null,this.getTagsForStencil("mxgraph.flowchart","start_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_2;whiteSpace=wrap;",100,100,"","Start",null,null,this.getTagsForStencil("mxgraph.flowchart","start_2","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.stored_data;whiteSpace=wrap;",100,60,"","Stored Data",null,null,this.getTagsForStencil("mxgraph.flowchart","stored_data","").join(" ")),this.createVertexTemplateEntry(a+
-"or;",70,70,"","Summing Junction",null,null,this.getTagsForStencil("mxgraph.flowchart","or","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.terminator;whiteSpace=wrap;",100,60,"","Terminator",null,null,this.getTagsForStencil("mxgraph.flowchart","terminator","").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=0;",
-100,70,"","Transfer",null,null,this.getTagsForStencil("mxgraph.flowchart","transfer","").join(" "))])}})();(function(){Sidebar.prototype.addGoogleCloudPlatformCardsPalette=function(){var a=[this.addDataEntry("gcp google cloud platform cardproduct",170,55,"Product Card","rZRdb4MgFIZ/DZczKq11l539uFqyZBe7XIgclQzFIG3tfv1AsNXpsi4dxggv5+DxeQWEk7LdS1IXz4ICR3iLcCKFULZXtglwjkKfUYQ3KAx9faNw98Ns0M36NZFQqVsSQptwJPwAVrFCo87cCZQ0BZhwH+GnQpW6xk2gu42S4gMSwYXsAjHtmp7JGOfpVc+6pvVcEsp0YX1OJSowCxWEitNo1TdGVeEUVyFIBe2PX9lJ7hP3IEpQ8qxDTm4dE7GyJPwCWF64tOXSaqSx4/ySemWmOw7bPEJ8B8KC1CakbHPzB3h5WnupKOuDgv75DlXOOkyG6oD2Aser3WaGqpmLYrxdTzxyvDU39Re24a9scexFj8MWTVHjhedgS+BEsSOMXjjngHvni2C6lNDvK3Q+nsfDfgGRZQ2oiYGXwm/ydDHxNLF2aHFrDfnusSaojEuiUq/s04gBduOBM7FvLq0TzvJKaxwyk2YsYCnhayeXjFL+j2Y5WH7vwXBjBDMbwx0b93oVjb16CML7zdLD6/low4fH5xc="),
+0;b<e.length;b++)a.appendChild(e[b](a))}))}})();(function(){Sidebar.prototype.addFlowchartPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.flowchart.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=";this.addPaletteFunctions("flowchart",mxResources.get("flowchart"),!1,[this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;",
+50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_2;align=left;",50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_2","").join(" ")),this.createVertexTemplateEntry(e+"card;whiteSpace=wrap;size=20;arcSize=12;",100,60,"","Card",null,null,this.getTagsForStencil("mxgraph.flowchart","card","").join(" ")),this.createVertexTemplateEntry(a+
+"collate;",100,100,"","Collate",null,null,this.getTagsForStencil("mxgraph.flowchart","collate","").join(" ")),this.createVertexTemplateEntry(e+"parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;rounded=1;arcSize=12;size=0.23;",100,60,"","Data",null,null,this.getTagsForStencil("mxgraph.flowchart","data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;",60,60,"","Database",null,null,this.getTagsForStencil("mxgraph.flowchart",
+"database","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;",100,100,"","Decision",null,null,this.getTagsForStencil("mxgraph.flowchart","decision","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.delay;whiteSpace=wrap;",100,60,"","Delay",null,null,this.getTagsForStencil("mxgraph.flowchart","delay","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.direct_data;whiteSpace=wrap;",
+100,60,"","Direct Data",null,null,this.getTagsForStencil("mxgraph.flowchart","direct_data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.display;whiteSpace=wrap;",100,60,"","Display",null,null,this.getTagsForStencil("mxgraph.flowchart","display","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.document2;whiteSpace=wrap;size=0.25;",100,60,"","Document",null,null,this.getTagsForStencil("mxgraph.flowchart","document",
+"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.extract_or_measurement;whiteSpace=wrap;",95,60,"","Extract or Measurement",null,null,this.getTagsForStencil("mxgraph.flowchart","extract_or_measurement","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.internal_storage;whiteSpace=wrap;",70,70,"","Internal Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","internal_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.loop_limit;whiteSpace=wrap;",
+100,60,"","Loop Limit",null,null,this.getTagsForStencil("mxgraph.flowchart","loop_limit","").join(" ")),this.createVertexTemplateEntry(e+"manualInput;whiteSpace=wrap;rounded=1;size=26;arcSize=11;",100,60,"","Manual Input",null,null,this.getTagsForStencil("mxgraph.flowchart","manual_input","").join(" ")),this.createVertexTemplateEntry(e+"trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;size=0.23;arcSize=10;flipV=1;",100,60,"","Manual Operation",null,null,this.getTagsForStencil("mxgraph.flowchart",
+"manual_operation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.merge_or_storage;whiteSpace=wrap;",95,60,"","Merge or Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","merge_or_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.multi-document;whiteSpace=wrap;",88,60,"","Multi-Document",null,null,this.getTagsForStencil("mxgraph.flowchart","multi-document","").join(" ")),this.createVertexTemplateEntry(e+
+"offPageConnector;rounded=0;size=0.5;",60,60,"","Off-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","off-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"on-page_reference;",60,60,"","On-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","on-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"summing_function;",70,70,"","Or",null,null,this.getTagsForStencil("mxgraph.flowchart","summing_function","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.paper_tape;whiteSpace=wrap;",
+100,65,"","Paper Tape",null,null,this.getTagsForStencil("mxgraph.flowchart","paper_tape","").join(" ")),this.createVertexTemplateEntry(a+"parallel_mode;",95,40,"","Parallel Mode",null,null,this.getTagsForStencil("mxgraph.flowchart","parallel_mode","").join(" ")),this.createVertexTemplateEntry(e+"process;whiteSpace=wrap;rounded=1;size=0.14;arcSize=6;",100,60,"","Predefined Process",null,null,this.getTagsForStencil("mxgraph.flowchart","predefined_process","").join(" ")),this.createVertexTemplateEntry(e+
+"hexagon;perimeter=hexagonPerimeter2;arcSize=6;size=0.27;",100,60,"","Preparation",null,null,this.getTagsForStencil("mxgraph.flowchart","preparation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.process;whiteSpace=wrap;",100,100,"","Process",null,null,this.getTagsForStencil("mxgraph.flowchart","process","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.sequential_data;whiteSpace=wrap;",100,100,"","Sequential Data",
+null,null,this.getTagsForStencil("mxgraph.flowchart","sequential_data","").join(" ")),this.createVertexTemplateEntry(a+"sort;",100,100,"","Sort",null,null,this.getTagsForStencil("mxgraph.flowchart","sort","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;",100,60,"","Start",null,null,this.getTagsForStencil("mxgraph.flowchart","start_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_2;whiteSpace=wrap;",
+100,100,"","Start",null,null,this.getTagsForStencil("mxgraph.flowchart","start_2","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.stored_data;whiteSpace=wrap;",100,60,"","Stored Data",null,null,this.getTagsForStencil("mxgraph.flowchart","stored_data","").join(" ")),this.createVertexTemplateEntry(a+"or;",70,70,"","Summing Junction",null,null,this.getTagsForStencil("mxgraph.flowchart","or","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.terminator;whiteSpace=wrap;",
+100,60,"","Terminator",null,null,this.getTagsForStencil("mxgraph.flowchart","terminator","").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=0;",100,70,"","Transfer",null,null,this.getTagsForStencil("mxgraph.flowchart","transfer","").join(" "))])}})();(function(){Sidebar.prototype.addGoogleCloudPlatformCardsPalette=function(){var a=[this.addDataEntry("gcp google cloud platform cardproduct",170,55,"Product Card","rZRdb4MgFIZ/DZczKq11l539uFqyZBe7XIgclQzFIG3tfv1AsNXpsi4dxggv5+DxeQWEk7LdS1IXz4ICR3iLcCKFULZXtglwjkKfUYQ3KAx9faNw98Ns0M36NZFQqVsSQptwJPwAVrFCo87cCZQ0BZhwH+GnQpW6xk2gu42S4gMSwYXsAjHtmp7JGOfpVc+6pvVcEsp0YX1OJSowCxWEitNo1TdGVeEUVyFIBe2PX9lJ7hP3IEpQ8qxDTm4dE7GyJPwCWF64tOXSaqSx4/ySemWmOw7bPEJ8B8KC1CakbHPzB3h5WnupKOuDgv75DlXOOkyG6oD2Aser3WaGqpmLYrxdTzxyvDU39Re24a9scexFj8MWTVHjhedgS+BEsSOMXjjngHvni2C6lNDvK3Q+nsfDfgGRZQ2oiYGXwm/ydDHxNLF2aHFrDfnusSaojEuiUq/s04gBduOBM7FvLq0TzvJKaxwyk2YsYCnhayeXjFL+j2Y5WH7vwXBjBDMbwx0b93oVjb16CML7zdLD6/low4fH5xc="),
this.addDataEntry("gcp google cloud platform cardproduct",190,55,"Product Card","5ZVdb4MgFIZ/jZczVlpnLzv7cbVkyS52uRA5KimKQdrqfv1AsNVos27droYxwss5eHwfUQdFeb0TuMyeOQHmoI2DIsG5NL28joAxx/cocdDa8X1PnY6/vTI7a2e9Egso5C0Jvkk4YnYAoxihkg2zAsFVBjrcc9BTJnNV43qmupUUfA8RZ1y0gYi0Tc0klLH4oidtU3oqMKGqsC6n4AXohTJM+Gmw6hslMrOKrRCEhPrqU7aSfcQd8BykaFTIya6jI5bGCS8DmmY2bbEwGq7MOD2nXjxTHWvbtIXoDgszXOqQvE71G+CmcenGPC8PErrrOxQpbW3SrvbcnqPwcbuecFXPBSHarEaMrN/KN/kdb/0vvUWhGyz7LRhbjeauNVsAw5IeYXDDKQL2ni+cqlJ8r6vQcmyGw24BniQVyBHAc+E3MZ2PmK4KzBpJ40rJTzjeQ0FGmJWJUoPihXylH1qcITvuw2mb0jGjaaE0BolO0xRojNnKyjklhP0iL+uX12Ho7w00sTfsl+NeXMEQ14P/F7wWI16R2T5K3JgN9DNYoaePfwfrHjhqePl/mfD+7+0T"),
this.addDataEntry("gcp google cloud platform cardproduct",190,110,"Product Card","5ZddT4MwFIZ/DZcujG7ILif7uDIx8cJL09ADNBZKSlXw19vS4iCwOJ0at3VZ1r49p5T3oTvBQWFWbQUu0ltOgDlo7aBQcC5NL6tCYMzxXEoctHI8z1Vfx9vsmZ02s26BBeTykATPJLxg9gxGMUIpa2YFgssUdLjroJtUZmqPq6nqllLwJwg546IJRKRpaiamjEU7PW6a0hOBCVUba3NynoNeKMWEv/ZWfaBEplaxOwQhodp7l41kb3ELPAMpahXyatfREQvjhJsCTVKbNp8bDZdmnHyk7jxTHWvbuIXoCAtTXOiQrEr0EzBJomIS8ax4ltD+PkKe0MYm7WrH7RkKrjerEVf1nB+g9XLAyPqtfJNf8db71FsUTPxFt/lDq9FsYs0WwLCkL9C74BgBe807TtVWPLfdoeVY94ftAjyOS5ADgB8bP4jpbMB0mWNWSxqVSr7B0RPkZIBZmSg1KJ7Le/qmxSmy4y6cpikdM5rkSmMQ6zRNgUaYLa2cUULYD/Kyfrkthu7ZQCNnw/5zHIvL7+O68n6D13zAKzTHR4lrc4C+Bytw9efiYP0oHP+8a0zdLyV/UXKuz73k+JdXcoJTLjl7eJ1zyVmcbMn5n7COgaOGu1cmE959o3oH"),
this.addDataEntry("gcp google cloud platform cardexpanded product",190,80,"Expanded Product Card","5ZZdb4MgFIZ/jbdGpbXusrMf2UWTJbvY5ULkKGQIBunW7tcPBPsR26zZ5s1G0xRezkF8Xjw1QHm9Wyvc0I0kwAO0DFCupNSuV+9y4DxIIkYCtAiSJDLfIFldmY272ajBCoS+JSFxCW+Yb8EpTmj1nnuB4JaCDY8CdE91bfa4iE231Uq+Qi65VF0gIl0zMyXjvDjqZdeMXilMmNlYnyOkALsQxUS+n636zIimXvE7BKVhd/UuO8nf4hpkDVrtTci7X8dG3DkSEQVWUZ+WeQ23blwdUo/MTMdju4wQ/QAhxY0NqXeVPQFhVTRhIetmq6H/fQFRsQ6TpXpCe4Ky2WpxgaqdSzO0nA888rxvApp8CRRlYXp32tIhXzQJp05VwLFmb3B2wUvY/TUfJTNbSaJ+h96o/fmwX0CWZQt64Nph4zcZORkYeY91QY30qGQBbctENbDWMNTWHCn0E/uwYoz8+NSQrhkdc1YJo3EobZo1gRWYz71cM0L4L3oUowuH3peEn1qSnluSjeDIdOBI7p4KIy7dc/E9P7LIfv60H6MYkn5d6/qaxl3Vuv4vMSbSeBSkkzGQzgZIN1uuWcPtIX8QrcbC1J5bznnyL+vO9BdMMcPjK5cLP30j+wQ="),
@@ -6824,33 +6829,33 @@ k.setAttribute("in","blur");k.setAttribute("dx",this.svgShadowSize);k.setAttribu
d.createElement("feComposite");k.setAttribute("in","offsetColor");k.setAttribute("in2","offsetBlur");k.setAttribute("operator","in");k.setAttribute("result","offsetBlur");g.appendChild(k);k=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"feBlend"):d.createElement("feBlend");k.setAttribute("in","SourceGraphic");k.setAttribute("in2","offsetBlur");g.appendChild(k);k=a.getElementsByTagName("defs");0==k.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=k[0];d.appendChild(g);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 g};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"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];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["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.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.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 p=mxMarker.createMarker;mxMarker.createMarker=function(a,b,c,d,g,k,e,n,f,h){if(null!=c&&null==mxMarker.markers[c]){var t=this.getPackageForType(c);null!=t&&mxStencilRegistry.getStencil(t)}return p.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function c(){p.value=Math.max(1,
-Math.min(n,Math.max(parseInt(p.value),parseInt(u.value))));u.value=Math.max(1,Math.min(n,Math.min(parseInt(p.value),parseInt(u.value))))}function d(b){function c(b,c,g){var k=b.getGraphBounds(),e=0,n=0,f=X.get(),t=1/b.pageScale,h=y.checked;if(h)var t=parseInt(R.value),q=parseInt(U.value),t=Math.min(f.height*q/(k.height/b.view.scale),f.width*t/(k.width/b.view.scale));else t=parseInt(x.value)/(100*b.pageScale),isNaN(t)&&(d=1/b.pageScale,x.value="100 %");f=mxRectangle.fromRectangle(f);f.width=Math.ceil(f.width*
-d);f.height=Math.ceil(f.height*d);t*=d;!h&&b.pageVisible?(k=b.getPageLayout(),e-=k.x*f.width,n-=k.y*f.height):h=!0;if(null==c){c=PrintDialog.createPrintPreview(b,t,f,0,e,n,h);c.pageSelector=!1;c.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(c.title=b.getTitle());var u=c.writeHead;c.writeHead=function(b){u.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 l=c.renderPage;c.renderPage=
-function(a,b,c,d,g,k){var e=l.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:e.className="geDisableMathJax";return e}}c.open(null,null,g,!0)}else{f=b.background;if(null==f||""==f||f==mxConstants.NONE)f="#ffffff";c.backgroundColor=f;c.autoOrigin=h;c.appendGraph(b,t,e,n,g,!0)}return c}var d=parseInt(P.value)/100;isNaN(d)&&(d=1,P.value="100 %");var d=.75*d,k=u.value,e=p.value,n=!q.checked,t=null;n&&(n=k==f&&e==f);if(!n&&null!=a.pages&&a.pages.length){var h=0,n=a.pages.length-1;q.checked||
-(h=parseInt(k)-1,n=parseInt(e)-1);for(var l=h;l<=n;l++){var m=a.pages[l],k=m==a.currentPage?g:null;if(null==k){var k=a.createTemporaryGraph(g.getStylesheet()),e=!0,h=!1,z=null,w=null;null==m.viewState&&null==m.mapping&&null==m.root&&a.updatePageRoot(m);null!=m.viewState?(e=m.viewState.pageVisible,h=m.viewState.mathEnabled,z=m.viewState.background,w=m.viewState.backgroundImage):null!=m.mapping&&null!=m.mapping.diagramMap&&(h="0"!=m.mapping.diagramMap.get("mathEnabled"),z=m.mapping.diagramMap.get("background"),
-w=m.mapping.diagramMap.get("backgroundImage"),w=null!=w&&0<w.length?JSON.parse(w):null);k.background=z;k.backgroundImage=null!=w?new mxImage(w.src,w.width,w.height):null;k.pageVisible=e;k.mathEnabled=h;var A=k.getGlobalVariable;k.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?l+1:A.apply(this,arguments)};document.body.appendChild(k.container);a.updatePageRoot(m);k.model.setRoot(m.root)}t=c(k,t,l!=n);k!=g&&k.container.parentNode.removeChild(k.container)}}else t=c(g);t.mathEnabled&&
-(n=t.wnd.document,n.writeln('<script type="text/x-mathjax-config">'),n.writeln("MathJax.Hub.Config({"),n.writeln('messageStyle: "none",'),n.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),n.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),n.writeln("TeX: {"),n.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),n.writeln("},"),n.writeln("tex2jax: {"),n.writeln('\tignoreClass: "geDisableMathJax"'),n.writeln("},"),
-n.writeln("asciimath2jax: {"),n.writeln('\tignoreClass: "geDisableMathJax"'),n.writeln("}"),n.writeln("});"),b&&(n.writeln("MathJax.Hub.Queue(function () {"),n.writeln("window.print();"),n.writeln("});")),n.writeln("\x3c/script>"),n.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));t.closeDocument();!t.mathEnabled&&b&&PrintDialog.printPreview(t)}var g=a.editor.graph,k=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"));k.appendChild(e);var n=1,f=1,h=document.createElement("div");h.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");h.appendChild(q);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("printAllPages"));h.appendChild(e);mxUtils.br(h);var l=q.cloneNode(!0);q.setAttribute("checked","checked");l.setAttribute("value","range");h.appendChild(l);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");h.appendChild(e);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";h.appendChild(u);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("to"));h.appendChild(e);var p=u.cloneNode(!0);h.appendChild(p);mxEvent.addListener(u,"focus",function(){l.checked=!0});mxEvent.addListener(p,"focus",function(){l.checked=!0});mxEvent.addListener(u,"change",c);mxEvent.addListener(p,"change",c);if(null!=a.pages&&(n=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){f=e+1;u.value=f;p.value=f;break}u.setAttribute("max",n);p.setAttribute("max",n);1<n&&k.appendChild(h);var m=document.createElement("div");
-m.style.marginBottom="10px";var w=document.createElement("input");w.style.marginRight="8px";w.setAttribute("value","adjust");w.setAttribute("type","radio");w.setAttribute("name","printZoom");m.appendChild(w);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));m.appendChild(e);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";m.appendChild(x);mxEvent.addListener(x,"focus",function(){w.checked=!0});
-k.appendChild(m);var h=h.cloneNode(!1),y=w.cloneNode(!0);y.setAttribute("value","fit");w.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(y);h.appendChild(e);m=document.createElement("table");m.style.display="inline-block";var N=document.createElement("tbody"),M=document.createElement("tr"),W=M.cloneNode(!0),I=document.createElement("td"),Q=I.cloneNode(!0),Z=I.cloneNode(!0),J=I.cloneNode(!0),
-V=I.cloneNode(!0),T=I.cloneNode(!0);I.style.textAlign="right";J.style.textAlign="right";mxUtils.write(I,mxResources.get("fitTo"));var R=document.createElement("input");R.style.cssText="margin:0 8px 0 8px;";R.setAttribute("value","1");R.setAttribute("min","1");R.setAttribute("type","number");R.style.width="40px";Q.appendChild(R);e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsAcross"));Z.appendChild(e);mxUtils.write(J,mxResources.get("fitToBy"));var U=R.cloneNode(!0);V.appendChild(U);
-mxEvent.addListener(R,"focus",function(){y.checked=!0});mxEvent.addListener(U,"focus",function(){y.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));T.appendChild(e);M.appendChild(I);M.appendChild(Q);M.appendChild(Z);W.appendChild(J);W.appendChild(V);W.appendChild(T);N.appendChild(M);N.appendChild(W);m.appendChild(N);h.appendChild(m);k.appendChild(h);h=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom=
-"12px";mxUtils.write(e,mxResources.get("paperSize"));h.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var X=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);h.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));h.appendChild(e);var P=document.createElement("input");P.style.cssText="margin:0 8px 0 8px;";P.setAttribute("value","100 %");P.style.width="60px";h.appendChild(P);
-k.appendChild(h);e=document.createElement("div");e.style.cssText="text-align:right;margin:62px 0 0 0;";h=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});h.className="geBtn";a.editor.cancelFirst&&e.appendChild(h);a.isOffline()||(m=mxUtils.button(mxResources.get("help"),function(){g.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),m.className="geBtn",e.appendChild(m));PrintDialog.previewEnabled&&(m=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();
-d(!1)}),m.className="geBtn",e.appendChild(m));m=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});m.className="geBtn gePrimaryBtn";e.appendChild(m);a.editor.cancelFirst||e.appendChild(h);k.appendChild(e);this.container=k};var w=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)):(w.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))}})();
-(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,d,c){c.ui=a.ui;return d};a.afterDecode=function(a,d,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="8.5.0";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);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>';
+mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];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["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.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.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 p=mxMarker.createMarker;mxMarker.createMarker=function(a,b,c,d,g,k,e,n,f,h){if(null!=c&&null==mxMarker.markers[c]){var t=this.getPackageForType(c);null!=t&&mxStencilRegistry.getStencil(t)}return p.apply(this,arguments)};
+PrintDialog.prototype.create=function(a,b){function c(){p.value=Math.max(1,Math.min(n,Math.max(parseInt(p.value),parseInt(u.value))));u.value=Math.max(1,Math.min(n,Math.min(parseInt(p.value),parseInt(u.value))))}function d(b){function c(b,c,g){var k=b.getGraphBounds(),e=0,n=0,f=X.get(),t=1/b.pageScale,h=y.checked;if(h)var t=parseInt(R.value),q=parseInt(U.value),t=Math.min(f.height*q/(k.height/b.view.scale),f.width*t/(k.width/b.view.scale));else t=parseInt(x.value)/(100*b.pageScale),isNaN(t)&&(d=1/
+b.pageScale,x.value="100 %");f=mxRectangle.fromRectangle(f);f.width=Math.ceil(f.width*d);f.height=Math.ceil(f.height*d);t*=d;!h&&b.pageVisible?(k=b.getPageLayout(),e-=k.x*f.width,n-=k.y*f.height):h=!0;if(null==c){c=PrintDialog.createPrintPreview(b,t,f,0,e,n,h);c.pageSelector=!1;c.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(c.title=b.getTitle());var u=c.writeHead;c.writeHead=function(b){u.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 l=c.renderPage;c.renderPage=function(a,b,c,d,g,k){var e=l.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:e.className="geDisableMathJax";return e}}c.open(null,null,g,!0)}else{f=b.background;if(null==f||""==f||f==mxConstants.NONE)f="#ffffff";c.backgroundColor=f;c.autoOrigin=h;c.appendGraph(b,t,e,n,g,!0)}return c}var d=parseInt(P.value)/100;isNaN(d)&&(d=1,P.value="100 %");var d=.75*d,k=u.value,e=p.value,n=!q.checked,t=null;
+n&&(n=k==f&&e==f);if(!n&&null!=a.pages&&a.pages.length){var h=0,n=a.pages.length-1;q.checked||(h=parseInt(k)-1,n=parseInt(e)-1);for(var l=h;l<=n;l++){var m=a.pages[l],k=m==a.currentPage?g:null;if(null==k){var k=a.createTemporaryGraph(g.getStylesheet()),e=!0,h=!1,z=null,w=null;null==m.viewState&&null==m.mapping&&null==m.root&&a.updatePageRoot(m);null!=m.viewState?(e=m.viewState.pageVisible,h=m.viewState.mathEnabled,z=m.viewState.background,w=m.viewState.backgroundImage):null!=m.mapping&&null!=m.mapping.diagramMap&&
+(h="0"!=m.mapping.diagramMap.get("mathEnabled"),z=m.mapping.diagramMap.get("background"),w=m.mapping.diagramMap.get("backgroundImage"),w=null!=w&&0<w.length?JSON.parse(w):null);k.background=z;k.backgroundImage=null!=w?new mxImage(w.src,w.width,w.height):null;k.pageVisible=e;k.mathEnabled=h;var A=k.getGlobalVariable;k.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?l+1:A.apply(this,arguments)};document.body.appendChild(k.container);a.updatePageRoot(m);k.model.setRoot(m.root)}t=
+c(k,t,l!=n);k!=g&&k.container.parentNode.removeChild(k.container)}}else t=c(g);t.mathEnabled&&(n=t.wnd.document,n.writeln('<script type="text/x-mathjax-config">'),n.writeln("MathJax.Hub.Config({"),n.writeln('messageStyle: "none",'),n.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),n.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),n.writeln("TeX: {"),n.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),
+n.writeln("},"),n.writeln("tex2jax: {"),n.writeln('\tignoreClass: "geDisableMathJax"'),n.writeln("},"),n.writeln("asciimath2jax: {"),n.writeln('\tignoreClass: "geDisableMathJax"'),n.writeln("}"),n.writeln("});"),b&&(n.writeln("MathJax.Hub.Queue(function () {"),n.writeln("window.print();"),n.writeln("});")),n.writeln("\x3c/script>"),n.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));t.closeDocument();!t.mathEnabled&&b&&PrintDialog.printPreview(t)}
+var g=a.editor.graph,k=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"));k.appendChild(e);var n=1,f=1,h=document.createElement("div");h.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");h.appendChild(q);e=document.createElement("span");mxUtils.write(e,mxResources.get("printAllPages"));h.appendChild(e);mxUtils.br(h);var l=q.cloneNode(!0);q.setAttribute("checked","checked");l.setAttribute("value","range");h.appendChild(l);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");h.appendChild(e);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";h.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("to"));h.appendChild(e);var p=u.cloneNode(!0);h.appendChild(p);mxEvent.addListener(u,"focus",function(){l.checked=!0});mxEvent.addListener(p,"focus",function(){l.checked=!0});mxEvent.addListener(u,"change",c);mxEvent.addListener(p,"change",c);if(null!=a.pages&&(n=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){f=e+
+1;u.value=f;p.value=f;break}u.setAttribute("max",n);p.setAttribute("max",n);1<n&&k.appendChild(h);var m=document.createElement("div");m.style.marginBottom="10px";var w=document.createElement("input");w.style.marginRight="8px";w.setAttribute("value","adjust");w.setAttribute("type","radio");w.setAttribute("name","printZoom");m.appendChild(w);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));m.appendChild(e);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";
+x.setAttribute("value","100 %");x.style.width="50px";m.appendChild(x);mxEvent.addListener(x,"focus",function(){w.checked=!0});k.appendChild(m);var h=h.cloneNode(!1),y=w.cloneNode(!0);y.setAttribute("value","fit");w.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(y);h.appendChild(e);m=document.createElement("table");m.style.display="inline-block";var N=document.createElement("tbody"),
+M=document.createElement("tr"),W=M.cloneNode(!0),I=document.createElement("td"),Q=I.cloneNode(!0),Z=I.cloneNode(!0),J=I.cloneNode(!0),V=I.cloneNode(!0),T=I.cloneNode(!0);I.style.textAlign="right";J.style.textAlign="right";mxUtils.write(I,mxResources.get("fitTo"));var R=document.createElement("input");R.style.cssText="margin:0 8px 0 8px;";R.setAttribute("value","1");R.setAttribute("min","1");R.setAttribute("type","number");R.style.width="40px";Q.appendChild(R);e=document.createElement("span");mxUtils.write(e,
+mxResources.get("fitToSheetsAcross"));Z.appendChild(e);mxUtils.write(J,mxResources.get("fitToBy"));var U=R.cloneNode(!0);V.appendChild(U);mxEvent.addListener(R,"focus",function(){y.checked=!0});mxEvent.addListener(U,"focus",function(){y.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));T.appendChild(e);M.appendChild(I);M.appendChild(Q);M.appendChild(Z);W.appendChild(J);W.appendChild(V);W.appendChild(T);N.appendChild(M);N.appendChild(W);m.appendChild(N);
+h.appendChild(m);k.appendChild(h);h=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom="12px";mxUtils.write(e,mxResources.get("paperSize"));h.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var X=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);h.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));h.appendChild(e);
+var P=document.createElement("input");P.style.cssText="margin:0 8px 0 8px;";P.setAttribute("value","100 %");P.style.width="60px";h.appendChild(P);k.appendChild(h);e=document.createElement("div");e.style.cssText="text-align:right;margin:62px 0 0 0;";h=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});h.className="geBtn";a.editor.cancelFirst&&e.appendChild(h);a.isOffline()||(m=mxUtils.button(mxResources.get("help"),function(){g.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
+m.className="geBtn",e.appendChild(m));PrintDialog.previewEnabled&&(m=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),m.className="geBtn",e.appendChild(m));m=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});m.className="geBtn gePrimaryBtn";e.appendChild(m);a.editor.cancelFirst||e.appendChild(h);k.appendChild(e);this.container=k};var w=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)):(w.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))}})();
+(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,d,c){c.ui=a.ui;return d};a.afterDecode=function(a,d,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="8.5.2";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);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;(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&&
diff --git a/src/main/webapp/js/atlas-viewer.min.js b/src/main/webapp/js/atlas-viewer.min.js
index be02c5e6..96a85ed8 100644
--- a/src/main/webapp/js/atlas-viewer.min.js
+++ b/src/main/webapp/js/atlas-viewer.min.js
@@ -2675,32 +2675,32 @@ g.setAttribute("in","blur");g.setAttribute("dx",this.svgShadowSize);g.setAttribu
c.createElement("feComposite");g.setAttribute("in","offsetColor");g.setAttribute("in2","offsetBlur");g.setAttribute("operator","in");g.setAttribute("result","offsetBlur");f.appendChild(g);g=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feBlend"):c.createElement("feBlend");g.setAttribute("in","SourceGraphic");g.setAttribute("in2","offsetBlur");f.appendChild(g);g=a.getElementsByTagName("defs");0==g.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=g[0];c.appendChild(f);b||((d||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 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"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];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["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.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.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 h=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,g,e,p,m,k){if(null!=b&&null==mxMarker.markers[b]){var u=this.getPackageForType(b);null!=u&&mxStencilRegistry.getStencil(u)}return h.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){l.value=Math.max(1,
-Math.min(h,Math.max(parseInt(l.value),parseInt(w.value))));w.value=Math.max(1,Math.min(h,Math.min(parseInt(l.value),parseInt(w.value))))}function c(d){function b(d,b,f){var g=d.getGraphBounds(),e=0,h=0,p=Y.get(),m=1/d.pageScale,k=t.checked;if(k)var m=parseInt(T.value),r=parseInt(V.value),m=Math.min(p.height*r/(g.height/d.view.scale),p.width*m/(g.width/d.view.scale));else m=parseInt(q.value)/(100*d.pageScale),isNaN(m)&&(c=1/d.pageScale,q.value="100 %");p=mxRectangle.fromRectangle(p);p.width=Math.ceil(p.width*
-c);p.height=Math.ceil(p.height*c);m*=c;!k&&d.pageVisible?(g=d.getPageLayout(),e-=g.x*p.width,h-=g.y*p.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,m,p,0,e,h,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 w=b.renderPage;b.renderPage=
-function(a,d,b,c,f,g){var e=w.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:e.className="geDisableMathJax";return e}}b.open(null,null,f,!0)}else{p=d.background;if(null==p||""==p||p==mxConstants.NONE)p="#ffffff";b.backgroundColor=p;b.autoOrigin=k;b.appendGraph(d,m,e,h,f,!0)}return b}var c=parseInt(M.value)/100;isNaN(c)&&(c=1,M.value="100 %");var c=.75*c,g=w.value,e=l.value,h=!k.checked,m=null;h&&(h=g==p&&e==p);if(!h&&null!=a.pages&&a.pages.length){var r=0,h=a.pages.length-1;k.checked||
-(r=parseInt(g)-1,h=parseInt(e)-1);for(var u=r;u<=h;u++){var x=a.pages[u],g=x==a.currentPage?f:null;if(null==g){var g=a.createTemporaryGraph(f.getStylesheet()),e=!0,r=!1,n=null,v=null;null==x.viewState&&null==x.mapping&&null==x.root&&a.updatePageRoot(x);null!=x.viewState?(e=x.viewState.pageVisible,r=x.viewState.mathEnabled,n=x.viewState.background,v=x.viewState.backgroundImage):null!=x.mapping&&null!=x.mapping.diagramMap&&(r="0"!=x.mapping.diagramMap.get("mathEnabled"),n=x.mapping.diagramMap.get("background"),
-v=x.mapping.diagramMap.get("backgroundImage"),v=null!=v&&0<v.length?JSON.parse(v):null);g.background=n;g.backgroundImage=null!=v?new mxImage(v.src,v.width,v.height):null;g.pageVisible=e;g.mathEnabled=r;var A=g.getGlobalVariable;g.getGlobalVariable=function(a){return"page"==a?x.getName():"pagenumber"==a?u+1:A.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(x);g.model.setRoot(x.root)}m=b(g,m,u!=h);g!=f&&g.container.parentNode.removeChild(g.container)}}else m=b(f);m.mathEnabled&&
-(h=m.wnd.document,h.writeln('<script type="text/x-mathjax-config">'),h.writeln("MathJax.Hub.Config({"),h.writeln('messageStyle: "none",'),h.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),h.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),h.writeln("TeX: {"),h.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),h.writeln("},"),h.writeln("tex2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("},"),
-h.writeln("asciimath2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("}"),h.writeln("});"),d&&(h.writeln("MathJax.Hub.Queue(function () {"),h.writeln("window.print();"),h.writeln("});")),h.writeln("\x3c/script>"),h.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));m.closeDocument();!m.mathEnabled&&d&&PrintDialog.printPreview(m)}var f=a.editor.graph,g=document.createElement("div"),e=document.createElement("h3");
-e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,d||mxResources.get("print"));g.appendChild(e);var h=1,p=1,m=document.createElement("div");m.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");m.appendChild(k);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("printAllPages"));m.appendChild(e);mxUtils.br(m);var u=k.cloneNode(!0);k.setAttribute("checked","checked");u.setAttribute("value","range");m.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");m.appendChild(e);var w=document.createElement("input");w.style.cssText="margin:0 8px 0 8px;";w.setAttribute("value","1");w.setAttribute("type","number");w.setAttribute("min","1");w.style.width="50px";m.appendChild(w);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("to"));m.appendChild(e);var l=w.cloneNode(!0);m.appendChild(l);mxEvent.addListener(w,"focus",function(){u.checked=!0});mxEvent.addListener(l,"focus",function(){u.checked=!0});mxEvent.addListener(w,"change",b);mxEvent.addListener(l,"change",b);if(null!=a.pages&&(h=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){p=e+1;w.value=p;l.value=p;break}w.setAttribute("max",h);l.setAttribute("max",h);1<h&&g.appendChild(m);var n=document.createElement("div");
-n.style.marginBottom="10px";var v=document.createElement("input");v.style.marginRight="8px";v.setAttribute("value","adjust");v.setAttribute("type","radio");v.setAttribute("name","printZoom");n.appendChild(v);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));n.appendChild(e);var q=document.createElement("input");q.style.cssText="margin:0 8px 0 8px;";q.setAttribute("value","100 %");q.style.width="50px";n.appendChild(q);mxEvent.addListener(q,"focus",function(){v.checked=!0});
-g.appendChild(n);var m=m.cloneNode(!1),t=v.cloneNode(!0);t.setAttribute("value","fit");v.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(t);m.appendChild(e);n=document.createElement("table");n.style.display="inline-block";var G=document.createElement("tbody"),K=document.createElement("tr"),S=K.cloneNode(!0),J=document.createElement("td"),N=J.cloneNode(!0),U=J.cloneNode(!0),D=J.cloneNode(!0),
-W=J.cloneNode(!0),O=J.cloneNode(!0);J.style.textAlign="right";D.style.textAlign="right";mxUtils.write(J,mxResources.get("fitTo"));var T=document.createElement("input");T.style.cssText="margin:0 8px 0 8px;";T.setAttribute("value","1");T.setAttribute("min","1");T.setAttribute("type","number");T.style.width="40px";N.appendChild(T);e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsAcross"));U.appendChild(e);mxUtils.write(D,mxResources.get("fitToBy"));var V=T.cloneNode(!0);W.appendChild(V);
-mxEvent.addListener(T,"focus",function(){t.checked=!0});mxEvent.addListener(V,"focus",function(){t.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));O.appendChild(e);K.appendChild(J);K.appendChild(N);K.appendChild(U);S.appendChild(D);S.appendChild(W);S.appendChild(O);G.appendChild(K);G.appendChild(S);n.appendChild(G);m.appendChild(n);g.appendChild(m);m=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom=
-"12px";mxUtils.write(e,mxResources.get("paperSize"));m.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var Y=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));m.appendChild(e);var M=document.createElement("input");M.style.cssText="margin:0 8px 0 8px;";M.setAttribute("value","100 %");M.style.width="60px";m.appendChild(M);
-g.appendChild(m);e=document.createElement("div");e.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&&e.appendChild(m);a.isOffline()||(n=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),n.className="geBtn",e.appendChild(n));PrintDialog.previewEnabled&&(n=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();
-c(!1)}),n.className="geBtn",e.appendChild(n));n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";e.appendChild(n);a.editor.cancelFirst||e.appendChild(m);g.appendChild(e);this.container=g};var w=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)):(w.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))}})();
+mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];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["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.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.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 h=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,g,e,p,m,k){if(null!=b&&null==mxMarker.markers[b]){var u=this.getPackageForType(b);null!=u&&mxStencilRegistry.getStencil(u)}return h.apply(this,arguments)};
+PrintDialog.prototype.create=function(a,d){function b(){l.value=Math.max(1,Math.min(h,Math.max(parseInt(l.value),parseInt(w.value))));w.value=Math.max(1,Math.min(h,Math.min(parseInt(l.value),parseInt(w.value))))}function c(d){function b(d,b,f){var g=d.getGraphBounds(),e=0,h=0,p=Y.get(),m=1/d.pageScale,k=t.checked;if(k)var m=parseInt(T.value),r=parseInt(V.value),m=Math.min(p.height*r/(g.height/d.view.scale),p.width*m/(g.width/d.view.scale));else m=parseInt(q.value)/(100*d.pageScale),isNaN(m)&&(c=1/
+d.pageScale,q.value="100 %");p=mxRectangle.fromRectangle(p);p.width=Math.ceil(p.width*c);p.height=Math.ceil(p.height*c);m*=c;!k&&d.pageVisible?(g=d.getPageLayout(),e-=g.x*p.width,h-=g.y*p.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,m,p,0,e,h,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 w=b.renderPage;b.renderPage=function(a,d,b,c,f,g){var e=w.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:e.className="geDisableMathJax";return e}}b.open(null,null,f,!0)}else{p=d.background;if(null==p||""==p||p==mxConstants.NONE)p="#ffffff";b.backgroundColor=p;b.autoOrigin=k;b.appendGraph(d,m,e,h,f,!0)}return b}var c=parseInt(M.value)/100;isNaN(c)&&(c=1,M.value="100 %");var c=.75*c,g=w.value,e=l.value,h=!k.checked,m=null;
+h&&(h=g==p&&e==p);if(!h&&null!=a.pages&&a.pages.length){var r=0,h=a.pages.length-1;k.checked||(r=parseInt(g)-1,h=parseInt(e)-1);for(var u=r;u<=h;u++){var x=a.pages[u],g=x==a.currentPage?f:null;if(null==g){var g=a.createTemporaryGraph(f.getStylesheet()),e=!0,r=!1,n=null,v=null;null==x.viewState&&null==x.mapping&&null==x.root&&a.updatePageRoot(x);null!=x.viewState?(e=x.viewState.pageVisible,r=x.viewState.mathEnabled,n=x.viewState.background,v=x.viewState.backgroundImage):null!=x.mapping&&null!=x.mapping.diagramMap&&
+(r="0"!=x.mapping.diagramMap.get("mathEnabled"),n=x.mapping.diagramMap.get("background"),v=x.mapping.diagramMap.get("backgroundImage"),v=null!=v&&0<v.length?JSON.parse(v):null);g.background=n;g.backgroundImage=null!=v?new mxImage(v.src,v.width,v.height):null;g.pageVisible=e;g.mathEnabled=r;var A=g.getGlobalVariable;g.getGlobalVariable=function(a){return"page"==a?x.getName():"pagenumber"==a?u+1:A.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(x);g.model.setRoot(x.root)}m=
+b(g,m,u!=h);g!=f&&g.container.parentNode.removeChild(g.container)}}else m=b(f);m.mathEnabled&&(h=m.wnd.document,h.writeln('<script type="text/x-mathjax-config">'),h.writeln("MathJax.Hub.Config({"),h.writeln('messageStyle: "none",'),h.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),h.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),h.writeln("TeX: {"),h.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),
+h.writeln("},"),h.writeln("tex2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("},"),h.writeln("asciimath2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("}"),h.writeln("});"),d&&(h.writeln("MathJax.Hub.Queue(function () {"),h.writeln("window.print();"),h.writeln("});")),h.writeln("\x3c/script>"),h.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));m.closeDocument();!m.mathEnabled&&d&&PrintDialog.printPreview(m)}
+var f=a.editor.graph,g=document.createElement("div"),e=document.createElement("h3");e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,d||mxResources.get("print"));g.appendChild(e);var h=1,p=1,m=document.createElement("div");m.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");m.appendChild(k);e=document.createElement("span");mxUtils.write(e,mxResources.get("printAllPages"));m.appendChild(e);mxUtils.br(m);var u=k.cloneNode(!0);k.setAttribute("checked","checked");u.setAttribute("value","range");m.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");m.appendChild(e);var w=document.createElement("input");w.style.cssText="margin:0 8px 0 8px;";w.setAttribute("value","1");w.setAttribute("type",
+"number");w.setAttribute("min","1");w.style.width="50px";m.appendChild(w);e=document.createElement("span");mxUtils.write(e,mxResources.get("to"));m.appendChild(e);var l=w.cloneNode(!0);m.appendChild(l);mxEvent.addListener(w,"focus",function(){u.checked=!0});mxEvent.addListener(l,"focus",function(){u.checked=!0});mxEvent.addListener(w,"change",b);mxEvent.addListener(l,"change",b);if(null!=a.pages&&(h=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){p=e+
+1;w.value=p;l.value=p;break}w.setAttribute("max",h);l.setAttribute("max",h);1<h&&g.appendChild(m);var n=document.createElement("div");n.style.marginBottom="10px";var v=document.createElement("input");v.style.marginRight="8px";v.setAttribute("value","adjust");v.setAttribute("type","radio");v.setAttribute("name","printZoom");n.appendChild(v);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));n.appendChild(e);var q=document.createElement("input");q.style.cssText="margin:0 8px 0 8px;";
+q.setAttribute("value","100 %");q.style.width="50px";n.appendChild(q);mxEvent.addListener(q,"focus",function(){v.checked=!0});g.appendChild(n);var m=m.cloneNode(!1),t=v.cloneNode(!0);t.setAttribute("value","fit");v.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(t);m.appendChild(e);n=document.createElement("table");n.style.display="inline-block";var G=document.createElement("tbody"),
+K=document.createElement("tr"),S=K.cloneNode(!0),J=document.createElement("td"),N=J.cloneNode(!0),U=J.cloneNode(!0),D=J.cloneNode(!0),W=J.cloneNode(!0),O=J.cloneNode(!0);J.style.textAlign="right";D.style.textAlign="right";mxUtils.write(J,mxResources.get("fitTo"));var T=document.createElement("input");T.style.cssText="margin:0 8px 0 8px;";T.setAttribute("value","1");T.setAttribute("min","1");T.setAttribute("type","number");T.style.width="40px";N.appendChild(T);e=document.createElement("span");mxUtils.write(e,
+mxResources.get("fitToSheetsAcross"));U.appendChild(e);mxUtils.write(D,mxResources.get("fitToBy"));var V=T.cloneNode(!0);W.appendChild(V);mxEvent.addListener(T,"focus",function(){t.checked=!0});mxEvent.addListener(V,"focus",function(){t.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));O.appendChild(e);K.appendChild(J);K.appendChild(N);K.appendChild(U);S.appendChild(D);S.appendChild(W);S.appendChild(O);G.appendChild(K);G.appendChild(S);n.appendChild(G);
+m.appendChild(n);g.appendChild(m);m=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom="12px";mxUtils.write(e,mxResources.get("paperSize"));m.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var Y=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));m.appendChild(e);
+var M=document.createElement("input");M.style.cssText="margin:0 8px 0 8px;";M.setAttribute("value","100 %");M.style.width="60px";m.appendChild(M);g.appendChild(m);e=document.createElement("div");e.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&&e.appendChild(m);a.isOffline()||(n=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
+n.className="geBtn",e.appendChild(n));PrintDialog.previewEnabled&&(n=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),n.className="geBtn",e.appendChild(n));n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";e.appendChild(n);a.editor.cancelFirst||e.appendChild(m);g.appendChild(e);this.container=g};var w=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)):(w.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))}})();
(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=/.*\.draw\.io$/.test(window.location.hostname);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=
diff --git a/src/main/webapp/js/atlas.min.js b/src/main/webapp/js/atlas.min.js
index f785234f..156da7d8 100644
--- a/src/main/webapp/js/atlas.min.js
+++ b/src/main/webapp/js/atlas.min.js
@@ -3879,15 +3879,20 @@ this.createVertexTemplateEntry(a+"unidentified_code_object;",50,42.5,"","Unident
120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;top=0;left=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry(a+"4_point_star_2;dx=0.8;",100,100,"","4 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","4_point_star","").join(" ")),this.createVertexTemplateEntry(a+
"6_point_star",100,90,"","6 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","6_point_star","").join(" ")),this.createVertexTemplateEntry(a+"8_point_star",100,100,"","8 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","8_point_star","").join(" ")),this.createVertexTemplateEntry(a+"banner",100,50,"","Banner",null,null,this.getTagsForStencil("mxgraph.basic","banner","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.cloud_callout",
90,60,"","Cloud Callout",null,null,this.getTagsForStencil("mxgraph.basic","cloud_callout","").join(" ")),this.createVertexTemplateEntry(a+"cone",100,100,"","Cone",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),this.createVertexTemplateEntry(a+"cone2;dx=0.5;dy=0.9;",100,100,"","Cone (adjustable)",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.document",100,100,"",
-"Document",null,null,this.getTagsForStencil("mxgraph.basic","document","").join(" ")),this.createVertexTemplateEntry(a+"drop",70,100,"","Drop",null,null,this.getTagsForStencil("mxgraph.basic","drop","").join(" ")),this.createVertexTemplateEntry(a+"flash",60,100,"","Flash",null,null,this.getTagsForStencil("mxgraph.basic","flash","").join(" ")),this.createVertexTemplateEntry(a+"half_circle",100,50,"","Half Circle",null,null,this.getTagsForStencil("mxgraph.basic","half_circle","").join(" ")),this.createVertexTemplateEntry(a+
-"heart",100,100,"","Heart",null,null,this.getTagsForStencil("mxgraph.basic","heart","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.isocube;isoAngle=15;",100,100,"","Isometric Cube",null,null,this.getTagsForStencil("mxgraph.basic","isometric cube","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.loud_callout",100,60,"","Loud Callout",null,null,this.getTagsForStencil("mxgraph.basic","loud_callout",
-"").join(" ")),this.createVertexTemplateEntry(a+"moon",75,100,"","Moon",null,null,this.getTagsForStencil("mxgraph.basic","moon","").join(" ")),this.createVertexTemplateEntry(a+"no_symbol",100,100,"","No Symbol",null,null,this.getTagsForStencil("mxgraph.basic","no_symbol","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.octagon2;align=center;verticalAlign=middle;dx=15;",100,100,"","Octagon",null,null,this.getTagsForStencil("mxgraph.basic","octagon",
-"").join(" ")),this.createVertexTemplateEntry(a+"orthogonal_triangle",100,70,"","Orthogonal Triangle",null,null,this.getTagsForStencil("mxgraph.basic","orthogonal_triangle","").join(" ")),this.createVertexTemplateEntry(a+"acute_triangle;dx=0.5;",100,70,"","Acute Triangle",null,null,this.getTagsForStencil("mxgraph.basic","acute_triangle","").join(" ")),this.createVertexTemplateEntry(a+"obtuse_triangle;dx=0.25;",100,70,"","Obtuse Triangle",null,null,this.getTagsForStencil("mxgraph.basic","obtuse_triangle",
-"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.oval_callout",100,60,"","Oval Callout",null,null,this.getTagsForStencil("mxgraph.basic","oval_callout","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pentagon",100,90,"","Pentagon",null,null,this.getTagsForStencil("mxgraph.basic","pentagon","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pointed_oval",
-50,100,"","Pointed Oval",null,null,this.getTagsForStencil("mxgraph.basic","pointed oval","").join(" ")),this.createVertexTemplateEntry(a+"pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;",100,100,"","Pyramid",null,null,this.getTagsForStencil("mxgraph.basic","pyramid","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.rectCallout;dx=30;dy=15;boundedLbl=1;",100,60,"","Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout",
-"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;",100,60,"","Rounded Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry(a+"smiley",100,100,"","Smiley",null,null,this.getTagsForStencil("mxgraph.basic","smiley","").join(" ")),this.createVertexTemplateEntry(a+"star",100,95,"","Star",null,null,this.getTagsForStencil("mxgraph.basic",
-"star","").join(" ")),this.createVertexTemplateEntry(a+"sun",100,100,"","Sun",null,null,this.getTagsForStencil("mxgraph.basic","sun","").join(" ")),this.createVertexTemplateEntry(a+"tick",85,100,"","Tick",null,null,this.getTagsForStencil("mxgraph.basic","tick","").join(" ")),this.createVertexTemplateEntry(a+"wave2;dy=0.3;",100,60,"","Wave",null,null,this.getTagsForStencil("mxgraph.basic","wave","").join(" ")),this.createVertexTemplateEntry(a+"x",100,100,"","X",null,null,this.getTagsForStencil("mxgraph.basic",
-"x","").join(" "))])}})();(function(){Sidebar.prototype.addBootstrapPalette=function(){var a=this,e=[this.addDataEntry("bootstrap button bar dark",800,40,"Button Bar (Dark)","5ZhRb5swEMc/DY+NDKaEvIZ2fdm0qpH27gUDVg2HjNuQfvod2EnJnGxRWqJUsRQJn332+ffnbBOPJmX7oFhd/ICUS4/eezRRANo8lW3CpfQCIlKP3nlBQPDnBd8OtPp9K6mZ4pU+xiEwDq9MvnBjMYZGr6U1FLrEsO58j86bgqWwwgrBSsqagqe2gi11179s824tk9+4gkbj40TxJUYyz4SUCUhQ/aA06EvnqBU8801LBRWOMl8VQvNFzZbdkCscBW02UK40bw8utjfZlT5wKLlWa+yyEqkuTI+YGCCk4CIvrFtobawx9Xzr+o4OHyy9/SSpQzKBsmbV+jSgQ16Wyl5U/wcPlR6An/XF2hfirfP1w48wD45gPg7y0EH+yKFGzGd5hUlfDunyF/asL11nJCyq/MmSoGQE9O0u9oESs5GUuHWUiMNPV8HKoOxbG7uSZNkpkpyMP/wnfuuwttvw5NZRY4NtqIYfGZvikmnxynfG2ieRnf8RBIa1nfyGkp3pb+LdESDLGq4diberOEr1yFH9l4AubKiaC931zph+/tTNP98fKQGnjhTh55/kF5eA0ZUnYOyovtAYdKPF8lITcKRk23fYjXXtmLnUuda4q1wZcxq5zKcjMd/sm8O7ngIkd+Jl76syj87J3HeYf4ccDT9f9HVRn9LRqGP1/WvfHAHDPwP+AA=="),
+"Document",null,null,this.getTagsForStencil("mxgraph.basic","document","").join(" ")),this.createVertexTemplateEntry(a+"donut;dx=25;",100,100,"","Donut",null,null,this.getTagsForStencil("mxgraph.basic","donut","").join(" ")),this.createVertexTemplateEntry(a+"drop",70,100,"","Drop",null,null,this.getTagsForStencil("mxgraph.basic","drop","").join(" ")),this.createVertexTemplateEntry(a+"flash",60,100,"","Flash",null,null,this.getTagsForStencil("mxgraph.basic","flash","").join(" ")),this.createVertexTemplateEntry(a+
+"half_circle",100,50,"","Half Circle",null,null,this.getTagsForStencil("mxgraph.basic","half_circle","").join(" ")),this.createVertexTemplateEntry(a+"heart",100,100,"","Heart",null,null,this.getTagsForStencil("mxgraph.basic","heart","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.isocube;isoAngle=15;",100,100,"","Isometric Cube",null,null,this.getTagsForStencil("mxgraph.basic","isometric cube","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.loud_callout",
+100,60,"","Loud Callout",null,null,this.getTagsForStencil("mxgraph.basic","loud_callout","").join(" ")),this.createVertexTemplateEntry(a+"moon",75,100,"","Moon",null,null,this.getTagsForStencil("mxgraph.basic","moon","").join(" ")),this.createVertexTemplateEntry(a+"no_symbol",100,100,"","No Symbol",null,null,this.getTagsForStencil("mxgraph.basic","no_symbol","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.octagon2;align=center;verticalAlign=middle;dx=15;",
+100,100,"","Octagon",null,null,this.getTagsForStencil("mxgraph.basic","octagon","").join(" ")),this.createVertexTemplateEntry(a+"orthogonal_triangle",100,70,"","Orthogonal Triangle",null,null,this.getTagsForStencil("mxgraph.basic","orthogonal_triangle","").join(" ")),this.createVertexTemplateEntry(a+"acute_triangle;dx=0.5;",100,70,"","Acute Triangle",null,null,this.getTagsForStencil("mxgraph.basic","acute_triangle","").join(" ")),this.createVertexTemplateEntry(a+"obtuse_triangle;dx=0.25;",100,70,
+"","Obtuse Triangle",null,null,this.getTagsForStencil("mxgraph.basic","obtuse_triangle","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.oval_callout",100,60,"","Oval Callout",null,null,this.getTagsForStencil("mxgraph.basic","oval_callout","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pentagon",100,90,"","Pentagon",null,null,this.getTagsForStencil("mxgraph.basic","pentagon","").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.pointed_oval",50,100,"","Pointed Oval",null,null,this.getTagsForStencil("mxgraph.basic","pointed oval","").join(" ")),this.createVertexTemplateEntry(a+"pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;",100,100,"","Pyramid",null,null,this.getTagsForStencil("mxgraph.basic","pyramid","").join(" ")),this.createVertexTemplateEntry(a+"diag_snip_rect;dx=6;",100,60,"","Diagonal Snip Rectangle",null,null,this.getTagsForStencil("mxgraph.basic",
+"diag_snip_rect","").join(" ")),this.createVertexTemplateEntry(a+"diag_round_rect;dx=6;",100,60,"","Diagonal Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","diag_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"corner_round_rect;dx=6;",100,60,"","Corner Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","corner_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"plaque;dx=6;",100,60,"","Plaque",null,null,this.getTagsForStencil("mxgraph.basic",
+"plaque","").join(" ")),this.createVertexTemplateEntry(a+"frame;dx=10;",100,60,"","Frame",null,null,this.getTagsForStencil("mxgraph.basic","frame","").join(" ")),this.createVertexTemplateEntry(a+"rounded_frame;dx=10;",100,60,"","Rounded Frame",null,null,this.getTagsForStencil("mxgraph.basic","rounded_frame","").join(" ")),this.createVertexTemplateEntry(a+"plaque_frame;dx=10;",100,60,"","Plaque Frame",null,null,this.getTagsForStencil("mxgraph.basic","plaque_frame","").join(" ")),this.createVertexTemplateEntry(a+
+"frame_corner;dx=10;",100,60,"","Frame Corner",null,null,this.getTagsForStencil("mxgraph.basic","frame_corner","").join(" ")),this.createVertexTemplateEntry(a+"diag_stripe;dx=10;",100,60,"","Diagonal Stripe",null,null,this.getTagsForStencil("mxgraph.basic","diag_stripe","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.rectCallout;dx=30;dy=15;boundedLbl=1;",100,60,"","Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout",
+"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;",100,60,"","Rounded Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry(a+"layered_rect;dx=10;",100,60,"","Layered Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","layered_rect","").join(" ")),this.createVertexTemplateEntry(a+"smiley",100,100,"","Smiley",
+null,null,this.getTagsForStencil("mxgraph.basic","smiley","").join(" ")),this.createVertexTemplateEntry(a+"star",100,95,"","Star",null,null,this.getTagsForStencil("mxgraph.basic","star","").join(" ")),this.createVertexTemplateEntry(a+"sun",100,100,"","Sun",null,null,this.getTagsForStencil("mxgraph.basic","sun","").join(" ")),this.createVertexTemplateEntry(a+"tick",85,100,"","Tick",null,null,this.getTagsForStencil("mxgraph.basic","tick","").join(" ")),this.createVertexTemplateEntry(a+"wave2;dy=0.3;",
+100,60,"","Wave",null,null,this.getTagsForStencil("mxgraph.basic","wave","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.button;dx=10;",100,60,"Button","Button",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.shaded_button;dx=10;fillColor=#E6E6E6;strokeColor=none;",
+100,60,"Button","Button (shaded)",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry(a+"x",100,100,"","X",null,null,this.getTagsForStencil("mxgraph.basic","x","").join(" ")),this.createVertexTemplateEntry(a+"pie;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null,null,this.getTagsForStencil("mxgraph.basic","pie","").join(" ")),this.createVertexTemplateEntry(a+"arc;startAngle=0.3;endAngle=0.1;",100,100,"","Arc",null,null,this.getTagsForStencil("mxgraph.basic",
+"arc","").join(" ")),this.createVertexTemplateEntry(a+"partConcEllipse;startAngle=0.25;endAngle=0.1;arcWidth=0.5;",100,100,"","Partial Concentric Ellipse",null,null,this.getTagsForStencil("mxgraph.basic","partConcEllipse","").join(" "))])}})();(function(){Sidebar.prototype.addBootstrapPalette=function(){var a=this,e=[this.addDataEntry("bootstrap button bar dark",800,40,"Button Bar (Dark)","5ZhRb5swEMc/DY+NDKaEvIZ2fdm0qpH27gUDVg2HjNuQfvod2EnJnGxRWqJUsRQJn332+ffnbBOPJmX7oFhd/ICUS4/eezRRANo8lW3CpfQCIlKP3nlBQPDnBd8OtPp9K6mZ4pU+xiEwDq9MvnBjMYZGr6U1FLrEsO58j86bgqWwwgrBSsqagqe2gi11179s824tk9+4gkbj40TxJUYyz4SUCUhQ/aA06EvnqBU8801LBRWOMl8VQvNFzZbdkCscBW02UK40bw8utjfZlT5wKLlWa+yyEqkuTI+YGCCk4CIvrFtobawx9Xzr+o4OHyy9/SSpQzKBsmbV+jSgQ16Wyl5U/wcPlR6An/XF2hfirfP1w48wD45gPg7y0EH+yKFGzGd5hUlfDunyF/asL11nJCyq/MmSoGQE9O0u9oESs5GUuHWUiMNPV8HKoOxbG7uSZNkpkpyMP/wnfuuwttvw5NZRY4NtqIYfGZvikmnxynfG2ieRnf8RBIa1nfyGkp3pb+LdESDLGq4diberOEr1yFH9l4AubKiaC931zph+/tTNP98fKQGnjhTh55/kF5eA0ZUnYOyovtAYdKPF8lITcKRk23fYjXXtmLnUuda4q1wZcxq5zKcjMd/sm8O7ngIkd+Jl76syj87J3HeYf4ccDT9f9HVRn9LRqGP1/WvfHAHDPwP+AA=="),
this.addDataEntry("bootstrap button bar bright",800,40,"Button Bar (Bright)","5ZdRb5swEMc/DY9FBhNCXkPavmxStUh798IB1gxGxmvIPv0OcBKoSZetpYpUIyT77DP278+dwaFx0TwqVuVfZQLCofcOjZWUuq8VTQxCOD7hiUM3ju8TvB3/4UKv1/WSiiko9TUOfu/wzMQv6C29odYHYQy5LnBZG8+h6zpnidxjg2AjYXUOiWlgT9WOL5qs3Yv7A3dQa6y6Cna4knXKhYilkKqblKZhe7WOWsmfcOwpZYmzrPc517Ct2K6dco+zoM0sFJSG5uJmO5PZ6SPIArQ64JA9T3Tej4hID4TkwLPcuAXGxuq+nZ1cz+iwYuhNk6QWyVgWFSsP/wd0yMtQmUT1d/Cy1APwSVeMfct/t75e8Bbm/hXM50EeWMifQFaI+WNeYdJel3R5gX3VlXYwEuZl9s2QoGQG9M0Y+0CJ1UxKLCwlouDdVTAyKPPWRhOSpATLlZKkXXkL/uBV/MbhYNKwu7DUOGIbquGFvU2BYJo/w2iuKYnM858kx2WdHn5Hyejxd9F4BpmmNWhL4tMurlI9tFT/zmW7bFnWN5r1PjD8vKUdf543UwAuLSmC9z/Jby4Aw08egJGl+lbjomvNd7cagDMF29RhN9dnx8qmDlpjVvlkzGloM1/OxPyYN0fQmdrlruvOnecWU3nOpK6xUC+/r6fsTPCsRJuAVJ8PpC9da+PNeB6Fi3FGstOhRyfUo/+uHjbPf7B9Whv+4P4B"),
this.addEntry("bootstrap button group vertical",function(){var d=new mxCell("",new mxGeometry(0,0,100,150),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;html=1;whiteSpace=wrap;fillColor=#ffffff;");d.vertex=!0;var b=new mxCell("Edit",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;perimeter=none;whiteSpace=wrap;resizeWidth=1;");b.geometry.relative=!0;b.vertex=
!0;d.insert(b);b=new mxCell("Create",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;resizeWidth=1;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(0,30);b.vertex=!0;d.insert(b);var c=new mxCell("Delete",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;resizeWidth=1;");
@@ -4585,20 +4590,20 @@ function(){var e=new mxCell("",new mxGeometry(20,20,520,100),"shape=ellipse;shad
new mxCell("",new mxGeometry(110,0,40,43),a+"office_chair;shadow=0;");g.vertex=!0;var k=new mxCell("",new mxGeometry(110,97,40,43),a+"office_chair;shadow=0;direction=west;");k.vertex=!0;var m=new mxCell("",new mxGeometry(170,0,40,43),a+"office_chair;shadow=0;");m.vertex=!0;var l=new mxCell("",new mxGeometry(170,97,40,43),a+"office_chair;shadow=0;direction=west;");l.vertex=!0;var r=new mxCell("",new mxGeometry(230,0,40,43),a+"office_chair;shadow=0;");r.vertex=!0;var n=new mxCell("",new mxGeometry(230,
97,40,43),a+"office_chair;shadow=0;direction=west;");n.vertex=!0;var p=new mxCell("",new mxGeometry(290,0,40,43),a+"office_chair;shadow=0;");p.vertex=!0;var q=new mxCell("",new mxGeometry(290,97,40,43),a+"office_chair;shadow=0;direction=west;");q.vertex=!0;var w=new mxCell("",new mxGeometry(350,0,40,43),a+"office_chair;shadow=0;");w.vertex=!0;var v=new mxCell("",new mxGeometry(350,97,40,43),a+"office_chair;shadow=0;direction=west;");v.vertex=!0;var y=new mxCell("",new mxGeometry(410,0,40,43),a+"office_chair;shadow=0;");
y.vertex=!0;var x=new mxCell("",new mxGeometry(410,97,40,43),a+"office_chair;shadow=0;direction=west;");x.vertex=!0;var u=new mxCell("",new mxGeometry(470,0,40,43),a+"office_chair;shadow=0;");u.vertex=!0;var t=new mxCell("",new mxGeometry(470,97,40,43),a+"office_chair;shadow=0;direction=west;");t.vertex=!0;return sb.createVertexTemplateFromCells([b,c,h,f,g,k,m,l,r,n,p,q,w,v,y,x,u,t,e],560,140,"Conference table")})];this.addPalette("floorplan",mxResources.get("floorplans"),!1,mxUtils.bind(this,function(a){for(var b=
-0;b<e.length;b++)a.appendChild(e[b](a))}))}})();(function(){Sidebar.prototype.addFlowchartPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.flowchart.";this.addPaletteFunctions("flowchart",mxResources.get("flowchart"),!1,[this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;",50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_2;align=left;",
-50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_2","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.card;whiteSpace=wrap;",100,60,"","Card",null,null,this.getTagsForStencil("mxgraph.flowchart","card","").join(" ")),this.createVertexTemplateEntry(a+"collate;",100,100,"","Collate",null,null,this.getTagsForStencil("mxgraph.flowchart","collate","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.data;whiteSpace=wrap;",
-100,60,"","Data",null,null,this.getTagsForStencil("mxgraph.flowchart","data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;",60,60,"","Database",null,null,this.getTagsForStencil("mxgraph.flowchart","database","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;",100,100,"","Decision",null,null,this.getTagsForStencil("mxgraph.flowchart","decision","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.delay;whiteSpace=wrap;",
-100,60,"","Delay",null,null,this.getTagsForStencil("mxgraph.flowchart","delay","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.direct_data;whiteSpace=wrap;",100,60,"","Direct Data",null,null,this.getTagsForStencil("mxgraph.flowchart","direct_data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.display;whiteSpace=wrap;",100,60,"","Display",null,null,this.getTagsForStencil("mxgraph.flowchart","display","").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.document;whiteSpace=wrap;",100,60,"","Document",null,null,this.getTagsForStencil("mxgraph.flowchart","document","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.extract_or_measurement;whiteSpace=wrap;",95,60,"","Extract or Measurement",null,null,this.getTagsForStencil("mxgraph.flowchart","extract_or_measurement","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.internal_storage;whiteSpace=wrap;",
-70,70,"","Internal Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","internal_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.loop_limit;whiteSpace=wrap;",100,60,"","Loop Limit",null,null,this.getTagsForStencil("mxgraph.flowchart","loop_limit","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.manual_input;whiteSpace=wrap;",100,60,"","Manual Input",null,null,this.getTagsForStencil("mxgraph.flowchart",
-"manual_input","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.manual_operation;whiteSpace=wrap;",100,60,"","Manual Operation",null,null,this.getTagsForStencil("mxgraph.flowchart","manual_operation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.merge_or_storage;whiteSpace=wrap;",95,60,"","Merge or Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","merge_or_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.multi-document;whiteSpace=wrap;",
-88,60,"","Multi-Document",null,null,this.getTagsForStencil("mxgraph.flowchart","multi-document","").join(" ")),this.createVertexTemplateEntry(a+"off-page_reference;",60,60,"","Off-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","off-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"on-page_reference;",60,60,"","On-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","on-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"summing_function;",
-70,70,"","Or",null,null,this.getTagsForStencil("mxgraph.flowchart","summing_function","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.paper_tape;whiteSpace=wrap;",100,65,"","Paper Tape",null,null,this.getTagsForStencil("mxgraph.flowchart","paper_tape","").join(" ")),this.createVertexTemplateEntry(a+"parallel_mode;",95,40,"","Parallel Mode",null,null,this.getTagsForStencil("mxgraph.flowchart","parallel_mode","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.predefined_process;whiteSpace=wrap;",
-100,60,"","Predefined Process",null,null,this.getTagsForStencil("mxgraph.flowchart","predefined_process","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.preparation;whiteSpace=wrap;",100,60,"","Preparation",null,null,this.getTagsForStencil("mxgraph.flowchart","preparation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.process;whiteSpace=wrap;",100,100,"","Process",null,null,this.getTagsForStencil("mxgraph.flowchart",
-"process","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.sequential_data;whiteSpace=wrap;",100,100,"","Sequential Data",null,null,this.getTagsForStencil("mxgraph.flowchart","sequential_data","").join(" ")),this.createVertexTemplateEntry(a+"sort;",100,100,"","Sort",null,null,this.getTagsForStencil("mxgraph.flowchart","sort","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;",100,60,"","Start",
-null,null,this.getTagsForStencil("mxgraph.flowchart","start_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_2;whiteSpace=wrap;",100,100,"","Start",null,null,this.getTagsForStencil("mxgraph.flowchart","start_2","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.stored_data;whiteSpace=wrap;",100,60,"","Stored Data",null,null,this.getTagsForStencil("mxgraph.flowchart","stored_data","").join(" ")),this.createVertexTemplateEntry(a+
-"or;",70,70,"","Summing Junction",null,null,this.getTagsForStencil("mxgraph.flowchart","or","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.terminator;whiteSpace=wrap;",100,60,"","Terminator",null,null,this.getTagsForStencil("mxgraph.flowchart","terminator","").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=0;",
-100,70,"","Transfer",null,null,this.getTagsForStencil("mxgraph.flowchart","transfer","").join(" "))])}})();(function(){Sidebar.prototype.addGoogleCloudPlatformCardsPalette=function(){var a=[this.addDataEntry("gcp google cloud platform cardproduct",170,55,"Product Card","rZRdb4MgFIZ/DZczKq11l539uFqyZBe7XIgclQzFIG3tfv1AsNXpsi4dxggv5+DxeQWEk7LdS1IXz4ICR3iLcCKFULZXtglwjkKfUYQ3KAx9faNw98Ns0M36NZFQqVsSQptwJPwAVrFCo87cCZQ0BZhwH+GnQpW6xk2gu42S4gMSwYXsAjHtmp7JGOfpVc+6pvVcEsp0YX1OJSowCxWEitNo1TdGVeEUVyFIBe2PX9lJ7hP3IEpQ8qxDTm4dE7GyJPwCWF64tOXSaqSx4/ySemWmOw7bPEJ8B8KC1CakbHPzB3h5WnupKOuDgv75DlXOOkyG6oD2Aser3WaGqpmLYrxdTzxyvDU39Re24a9scexFj8MWTVHjhedgS+BEsSOMXjjngHvni2C6lNDvK3Q+nsfDfgGRZQ2oiYGXwm/ydDHxNLF2aHFrDfnusSaojEuiUq/s04gBduOBM7FvLq0TzvJKaxwyk2YsYCnhayeXjFL+j2Y5WH7vwXBjBDMbwx0b93oVjb16CML7zdLD6/low4fH5xc="),
+0;b<e.length;b++)a.appendChild(e[b](a))}))}})();(function(){Sidebar.prototype.addFlowchartPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.flowchart.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=";this.addPaletteFunctions("flowchart",mxResources.get("flowchart"),!1,[this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_1;align=left;",
+50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.annotation_2;align=left;",50,100,"","Annotation",null,null,this.getTagsForStencil("mxgraph.flowchart","annotation_2","").join(" ")),this.createVertexTemplateEntry(e+"card;whiteSpace=wrap;size=20;arcSize=12;",100,60,"","Card",null,null,this.getTagsForStencil("mxgraph.flowchart","card","").join(" ")),this.createVertexTemplateEntry(a+
+"collate;",100,100,"","Collate",null,null,this.getTagsForStencil("mxgraph.flowchart","collate","").join(" ")),this.createVertexTemplateEntry(e+"parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;rounded=1;arcSize=12;size=0.23;",100,60,"","Data",null,null,this.getTagsForStencil("mxgraph.flowchart","data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;",60,60,"","Database",null,null,this.getTagsForStencil("mxgraph.flowchart",
+"database","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;",100,100,"","Decision",null,null,this.getTagsForStencil("mxgraph.flowchart","decision","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.delay;whiteSpace=wrap;",100,60,"","Delay",null,null,this.getTagsForStencil("mxgraph.flowchart","delay","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.direct_data;whiteSpace=wrap;",
+100,60,"","Direct Data",null,null,this.getTagsForStencil("mxgraph.flowchart","direct_data","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.display;whiteSpace=wrap;",100,60,"","Display",null,null,this.getTagsForStencil("mxgraph.flowchart","display","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.document2;whiteSpace=wrap;size=0.25;",100,60,"","Document",null,null,this.getTagsForStencil("mxgraph.flowchart","document",
+"").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.extract_or_measurement;whiteSpace=wrap;",95,60,"","Extract or Measurement",null,null,this.getTagsForStencil("mxgraph.flowchart","extract_or_measurement","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.internal_storage;whiteSpace=wrap;",70,70,"","Internal Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","internal_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.loop_limit;whiteSpace=wrap;",
+100,60,"","Loop Limit",null,null,this.getTagsForStencil("mxgraph.flowchart","loop_limit","").join(" ")),this.createVertexTemplateEntry(e+"manualInput;whiteSpace=wrap;rounded=1;size=26;arcSize=11;",100,60,"","Manual Input",null,null,this.getTagsForStencil("mxgraph.flowchart","manual_input","").join(" ")),this.createVertexTemplateEntry(e+"trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;size=0.23;arcSize=10;flipV=1;",100,60,"","Manual Operation",null,null,this.getTagsForStencil("mxgraph.flowchart",
+"manual_operation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.merge_or_storage;whiteSpace=wrap;",95,60,"","Merge or Storage",null,null,this.getTagsForStencil("mxgraph.flowchart","merge_or_storage","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.multi-document;whiteSpace=wrap;",88,60,"","Multi-Document",null,null,this.getTagsForStencil("mxgraph.flowchart","multi-document","").join(" ")),this.createVertexTemplateEntry(e+
+"offPageConnector;rounded=0;size=0.5;",60,60,"","Off-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","off-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"on-page_reference;",60,60,"","On-Page Reference",null,null,this.getTagsForStencil("mxgraph.flowchart","on-page_reference","").join(" ")),this.createVertexTemplateEntry(a+"summing_function;",70,70,"","Or",null,null,this.getTagsForStencil("mxgraph.flowchart","summing_function","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.paper_tape;whiteSpace=wrap;",
+100,65,"","Paper Tape",null,null,this.getTagsForStencil("mxgraph.flowchart","paper_tape","").join(" ")),this.createVertexTemplateEntry(a+"parallel_mode;",95,40,"","Parallel Mode",null,null,this.getTagsForStencil("mxgraph.flowchart","parallel_mode","").join(" ")),this.createVertexTemplateEntry(e+"process;whiteSpace=wrap;rounded=1;size=0.14;arcSize=6;",100,60,"","Predefined Process",null,null,this.getTagsForStencil("mxgraph.flowchart","predefined_process","").join(" ")),this.createVertexTemplateEntry(e+
+"hexagon;perimeter=hexagonPerimeter2;arcSize=6;size=0.27;",100,60,"","Preparation",null,null,this.getTagsForStencil("mxgraph.flowchart","preparation","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.process;whiteSpace=wrap;",100,100,"","Process",null,null,this.getTagsForStencil("mxgraph.flowchart","process","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.sequential_data;whiteSpace=wrap;",100,100,"","Sequential Data",
+null,null,this.getTagsForStencil("mxgraph.flowchart","sequential_data","").join(" ")),this.createVertexTemplateEntry(a+"sort;",100,100,"","Sort",null,null,this.getTagsForStencil("mxgraph.flowchart","sort","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;",100,60,"","Start",null,null,this.getTagsForStencil("mxgraph.flowchart","start_1","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.start_2;whiteSpace=wrap;",
+100,100,"","Start",null,null,this.getTagsForStencil("mxgraph.flowchart","start_2","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.stored_data;whiteSpace=wrap;",100,60,"","Stored Data",null,null,this.getTagsForStencil("mxgraph.flowchart","stored_data","").join(" ")),this.createVertexTemplateEntry(a+"or;",70,70,"","Summing Junction",null,null,this.getTagsForStencil("mxgraph.flowchart","or","").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;html=1;shape=mxgraph.flowchart.terminator;whiteSpace=wrap;",
+100,60,"","Terminator",null,null,this.getTagsForStencil("mxgraph.flowchart","terminator","").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;strokeWidth=2;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=0;",100,70,"","Transfer",null,null,this.getTagsForStencil("mxgraph.flowchart","transfer","").join(" "))])}})();(function(){Sidebar.prototype.addGoogleCloudPlatformCardsPalette=function(){var a=[this.addDataEntry("gcp google cloud platform cardproduct",170,55,"Product Card","rZRdb4MgFIZ/DZczKq11l539uFqyZBe7XIgclQzFIG3tfv1AsNXpsi4dxggv5+DxeQWEk7LdS1IXz4ICR3iLcCKFULZXtglwjkKfUYQ3KAx9faNw98Ns0M36NZFQqVsSQptwJPwAVrFCo87cCZQ0BZhwH+GnQpW6xk2gu42S4gMSwYXsAjHtmp7JGOfpVc+6pvVcEsp0YX1OJSowCxWEitNo1TdGVeEUVyFIBe2PX9lJ7hP3IEpQ8qxDTm4dE7GyJPwCWF64tOXSaqSx4/ySemWmOw7bPEJ8B8KC1CakbHPzB3h5WnupKOuDgv75DlXOOkyG6oD2Aser3WaGqpmLYrxdTzxyvDU39Re24a9scexFj8MWTVHjhedgS+BEsSOMXjjngHvni2C6lNDvK3Q+nsfDfgGRZQ2oiYGXwm/ydDHxNLF2aHFrDfnusSaojEuiUq/s04gBduOBM7FvLq0TzvJKaxwyk2YsYCnhayeXjFL+j2Y5WH7vwXBjBDMbwx0b93oVjb16CML7zdLD6/low4fH5xc="),
this.addDataEntry("gcp google cloud platform cardproduct",190,55,"Product Card","5ZVdb4MgFIZ/jZczVlpnLzv7cbVkyS52uRA5KimKQdrqfv1AsNVos27droYxwss5eHwfUQdFeb0TuMyeOQHmoI2DIsG5NL28joAxx/cocdDa8X1PnY6/vTI7a2e9Egso5C0Jvkk4YnYAoxihkg2zAsFVBjrcc9BTJnNV43qmupUUfA8RZ1y0gYi0Tc0klLH4oidtU3oqMKGqsC6n4AXohTJM+Gmw6hslMrOKrRCEhPrqU7aSfcQd8BykaFTIya6jI5bGCS8DmmY2bbEwGq7MOD2nXjxTHWvbtIXoDgszXOqQvE71G+CmcenGPC8PErrrOxQpbW3SrvbcnqPwcbuecFXPBSHarEaMrN/KN/kdb/0vvUWhGyz7LRhbjeauNVsAw5IeYXDDKQL2ni+cqlJ8r6vQcmyGw24BniQVyBHAc+E3MZ2PmK4KzBpJ40rJTzjeQ0FGmJWJUoPihXylH1qcITvuw2mb0jGjaaE0BolO0xRojNnKyjklhP0iL+uX12Ho7w00sTfsl+NeXMEQ14P/F7wWI16R2T5K3JgN9DNYoaePfwfrHjhqePl/mfD+7+0T"),
this.addDataEntry("gcp google cloud platform cardproduct",190,110,"Product Card","5ZddT4MwFIZ/DZcujG7ILif7uDIx8cJL09ADNBZKSlXw19vS4iCwOJ0at3VZ1r49p5T3oTvBQWFWbQUu0ltOgDlo7aBQcC5NL6tCYMzxXEoctHI8z1Vfx9vsmZ02s26BBeTykATPJLxg9gxGMUIpa2YFgssUdLjroJtUZmqPq6nqllLwJwg546IJRKRpaiamjEU7PW6a0hOBCVUba3NynoNeKMWEv/ZWfaBEplaxOwQhodp7l41kb3ELPAMpahXyatfREQvjhJsCTVKbNp8bDZdmnHyk7jxTHWvbuIXoCAtTXOiQrEr0EzBJomIS8ax4ltD+PkKe0MYm7WrH7RkKrjerEVf1nB+g9XLAyPqtfJNf8db71FsUTPxFt/lDq9FsYs0WwLCkL9C74BgBe807TtVWPLfdoeVY94ftAjyOS5ADgB8bP4jpbMB0mWNWSxqVSr7B0RPkZIBZmSg1KJ7Le/qmxSmy4y6cpikdM5rkSmMQ6zRNgUaYLa2cUULYD/Kyfrkthu7ZQCNnw/5zHIvL7+O68n6D13zAKzTHR4lrc4C+Bytw9efiYP0oHP+8a0zdLyV/UXKuz73k+JdXcoJTLjl7eJ1zyVmcbMn5n7COgaOGu1cmE959o3oH"),
this.addDataEntry("gcp google cloud platform cardexpanded product",190,80,"Expanded Product Card","5ZZdb4MgFIZ/jbdGpbXusrMf2UWTJbvY5ULkKGQIBunW7tcPBPsR26zZ5s1G0xRezkF8Xjw1QHm9Wyvc0I0kwAO0DFCupNSuV+9y4DxIIkYCtAiSJDLfIFldmY272ajBCoS+JSFxCW+Yb8EpTmj1nnuB4JaCDY8CdE91bfa4iE231Uq+Qi65VF0gIl0zMyXjvDjqZdeMXilMmNlYnyOkALsQxUS+n636zIimXvE7BKVhd/UuO8nf4hpkDVrtTci7X8dG3DkSEQVWUZ+WeQ23blwdUo/MTMdju4wQ/QAhxY0NqXeVPQFhVTRhIetmq6H/fQFRsQ6TpXpCe4Ky2WpxgaqdSzO0nA888rxvApp8CRRlYXp32tIhXzQJp05VwLFmb3B2wUvY/TUfJTNbSaJ+h96o/fmwX0CWZQt64Nph4zcZORkYeY91QY30qGQBbctENbDWMNTWHCn0E/uwYoz8+NSQrhkdc1YJo3EobZo1gRWYz71cM0L4L3oUowuH3peEn1qSnluSjeDIdOBI7p4KIy7dc/E9P7LIfv60H6MYkn5d6/qaxl3Vuv4vMSbSeBSkkzGQzgZIN1uuWcPtIX8QrcbC1J5bznnyL+vO9BdMMcPjK5cLP30j+wQ="),
@@ -6824,33 +6829,33 @@ m.setAttribute("in","blur");m.setAttribute("dx",this.svgShadowSize);m.setAttribu
f.createElement("feComposite");m.setAttribute("in","offsetColor");m.setAttribute("in2","offsetBlur");m.setAttribute("operator","in");m.setAttribute("result","offsetBlur");h.appendChild(m);m=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"feBlend"):f.createElement("feBlend");m.setAttribute("in","SourceGraphic");m.setAttribute("in2","offsetBlur");h.appendChild(m);m=a.getElementsByTagName("defs");0==m.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=m[0];f.appendChild(h);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 h};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"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];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["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.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.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 u=mxMarker.createMarker;mxMarker.createMarker=function(a,c,b,f,h,d,e,g,t,q){if(null!=b&&null==mxMarker.markers[b]){var m=this.getPackageForType(b);null!=m&&mxStencilRegistry.getStencil(m)}return u.apply(this,arguments)};PrintDialog.prototype.create=function(a,c){function b(){l.value=Math.max(1,
-Math.min(g,Math.max(parseInt(l.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(l.value),parseInt(n.value))))}function f(c){function b(c,b,h){var m=c.getGraphBounds(),d=0,e=0,g=X.get(),q=1/c.pageScale,t=z.checked;if(t)var q=parseInt(R.value),u=parseInt(U.value),q=Math.min(g.height*u/(m.height/c.view.scale),g.width*q/(m.width/c.view.scale));else q=parseInt(p.value)/(100*c.pageScale),isNaN(q)&&(f=1/c.pageScale,p.value="100 %");g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*
-f);g.height=Math.ceil(g.height*f);q*=f;!t&&c.pageVisible?(m=c.getPageLayout(),d-=m.x*g.width,e-=m.y*g.height):t=!0;if(null==b){b=PrintDialog.createPrintPreview(c,q,g,0,d,e,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 v=b.renderPage;b.renderPage=
-function(a,c,b,f,h,m){var d=v.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:d.className="geDisableMathJax";return d}}b.open(null,null,h,!0)}else{g=c.background;if(null==g||""==g||g==mxConstants.NONE)g="#ffffff";b.backgroundColor=g;b.autoOrigin=t;b.appendGraph(c,q,d,e,h,!0)}return b}var f=parseInt(P.value)/100;isNaN(f)&&(f=1,P.value="100 %");var f=.75*f,m=n.value,e=l.value,d=!u.checked,g=null;d&&(d=m==t&&e==t);if(!d&&null!=a.pages&&a.pages.length){var q=0,d=a.pages.length-1;u.checked||
-(q=parseInt(m)-1,d=parseInt(e)-1);for(var v=q;v<=d;v++){var k=a.pages[v],m=k==a.currentPage?h:null;if(null==m){var m=a.createTemporaryGraph(h.getStylesheet()),e=!0,q=!1,w=null,y=null;null==k.viewState&&null==k.mapping&&null==k.root&&a.updatePageRoot(k);null!=k.viewState?(e=k.viewState.pageVisible,q=k.viewState.mathEnabled,w=k.viewState.background,y=k.viewState.backgroundImage):null!=k.mapping&&null!=k.mapping.diagramMap&&(q="0"!=k.mapping.diagramMap.get("mathEnabled"),w=k.mapping.diagramMap.get("background"),
-y=k.mapping.diagramMap.get("backgroundImage"),y=null!=y&&0<y.length?JSON.parse(y):null);m.background=w;m.backgroundImage=null!=y?new mxImage(y.src,y.width,y.height):null;m.pageVisible=e;m.mathEnabled=q;var A=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?v+1:A.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(k);m.model.setRoot(k.root)}g=b(m,g,v!=d);m!=h&&m.container.parentNode.removeChild(m.container)}}else g=b(h);g.mathEnabled&&
-(d=g.wnd.document,d.writeln('<script type="text/x-mathjax-config">'),d.writeln("MathJax.Hub.Config({"),d.writeln('messageStyle: "none",'),d.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),d.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),d.writeln("TeX: {"),d.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),d.writeln("},"),d.writeln("tex2jax: {"),d.writeln('\tignoreClass: "geDisableMathJax"'),d.writeln("},"),
-d.writeln("asciimath2jax: {"),d.writeln('\tignoreClass: "geDisableMathJax"'),d.writeln("}"),d.writeln("});"),c&&(d.writeln("MathJax.Hub.Queue(function () {"),d.writeln("window.print();"),d.writeln("});")),d.writeln("\x3c/script>"),d.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));g.closeDocument();!g.mathEnabled&&c&&PrintDialog.printPreview(g)}var h=a.editor.graph,d=document.createElement("div"),e=document.createElement("h3");
-e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,c||mxResources.get("print"));d.appendChild(e);var g=1,t=1,q=document.createElement("div");q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","all");u.setAttribute("type","radio");u.setAttribute("name","pages-printdialog");q.appendChild(u);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("printAllPages"));q.appendChild(e);mxUtils.br(q);var k=u.cloneNode(!0);u.setAttribute("checked","checked");k.setAttribute("value","range");q.appendChild(k);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");q.appendChild(e);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";q.appendChild(n);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("to"));q.appendChild(e);var l=n.cloneNode(!0);q.appendChild(l);mxEvent.addListener(n,"focus",function(){k.checked=!0});mxEvent.addListener(l,"focus",function(){k.checked=!0});mxEvent.addListener(n,"change",b);mxEvent.addListener(l,"change",b);if(null!=a.pages&&(g=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){t=e+1;n.value=t;l.value=t;break}n.setAttribute("max",g);l.setAttribute("max",g);1<g&&d.appendChild(q);var w=document.createElement("div");
-w.style.marginBottom="10px";var y=document.createElement("input");y.style.marginRight="8px";y.setAttribute("value","adjust");y.setAttribute("type","radio");y.setAttribute("name","printZoom");w.appendChild(y);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));w.appendChild(e);var p=document.createElement("input");p.style.cssText="margin:0 8px 0 8px;";p.setAttribute("value","100 %");p.style.width="50px";w.appendChild(p);mxEvent.addListener(p,"focus",function(){y.checked=!0});
-d.appendChild(w);var q=q.cloneNode(!1),z=y.cloneNode(!0);z.setAttribute("value","fit");y.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(z);q.appendChild(e);w=document.createElement("table");w.style.display="inline-block";var N=document.createElement("tbody"),M=document.createElement("tr"),W=M.cloneNode(!0),I=document.createElement("td"),Q=I.cloneNode(!0),Z=I.cloneNode(!0),J=I.cloneNode(!0),
-V=I.cloneNode(!0),T=I.cloneNode(!0);I.style.textAlign="right";J.style.textAlign="right";mxUtils.write(I,mxResources.get("fitTo"));var R=document.createElement("input");R.style.cssText="margin:0 8px 0 8px;";R.setAttribute("value","1");R.setAttribute("min","1");R.setAttribute("type","number");R.style.width="40px";Q.appendChild(R);e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsAcross"));Z.appendChild(e);mxUtils.write(J,mxResources.get("fitToBy"));var U=R.cloneNode(!0);V.appendChild(U);
-mxEvent.addListener(R,"focus",function(){z.checked=!0});mxEvent.addListener(U,"focus",function(){z.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));T.appendChild(e);M.appendChild(I);M.appendChild(Q);M.appendChild(Z);W.appendChild(J);W.appendChild(V);W.appendChild(T);N.appendChild(M);N.appendChild(W);w.appendChild(N);q.appendChild(w);d.appendChild(q);q=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom=
-"12px";mxUtils.write(e,mxResources.get("paperSize"));q.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var X=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);q.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));q.appendChild(e);var P=document.createElement("input");P.style.cssText="margin:0 8px 0 8px;";P.setAttribute("value","100 %");P.style.width="60px";q.appendChild(P);
-d.appendChild(q);e=document.createElement("div");e.style.cssText="text-align:right;margin:62px 0 0 0;";q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&e.appendChild(q);a.isOffline()||(w=mxUtils.button(mxResources.get("help"),function(){h.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),w.className="geBtn",e.appendChild(w));PrintDialog.previewEnabled&&(w=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();
-f(!1)}),w.className="geBtn",e.appendChild(w));w=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();f(!0)});w.className="geBtn gePrimaryBtn";e.appendChild(w);a.editor.cancelFirst||e.appendChild(q);d.appendChild(e);this.container=d};var w=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)):(w.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))}})();
-(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,d,b){b.ui=a.ui;return d};a.afterDecode=function(a,d,b){b.previousColor=b.color;b.previousImage=b.image;b.previousFormat=b.format;null!=b.foldingEnabled&&(b.foldingEnabled=!b.foldingEnabled);null!=b.mathEnabled&&(b.mathEnabled=!b.mathEnabled);null!=b.shadowVisible&&(b.shadowVisible=!b.shadowVisible);return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="8.5.0";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);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>';
+mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];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["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.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.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 u=mxMarker.createMarker;mxMarker.createMarker=function(a,c,b,f,h,d,e,g,t,q){if(null!=b&&null==mxMarker.markers[b]){var m=this.getPackageForType(b);null!=m&&mxStencilRegistry.getStencil(m)}return u.apply(this,arguments)};
+PrintDialog.prototype.create=function(a,c){function b(){l.value=Math.max(1,Math.min(g,Math.max(parseInt(l.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(l.value),parseInt(n.value))))}function f(c){function b(c,b,h){var m=c.getGraphBounds(),d=0,e=0,g=X.get(),q=1/c.pageScale,t=z.checked;if(t)var q=parseInt(R.value),u=parseInt(U.value),q=Math.min(g.height*u/(m.height/c.view.scale),g.width*q/(m.width/c.view.scale));else q=parseInt(p.value)/(100*c.pageScale),isNaN(q)&&(f=1/
+c.pageScale,p.value="100 %");g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*f);g.height=Math.ceil(g.height*f);q*=f;!t&&c.pageVisible?(m=c.getPageLayout(),d-=m.x*g.width,e-=m.y*g.height):t=!0;if(null==b){b=PrintDialog.createPrintPreview(c,q,g,0,d,e,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 v=b.renderPage;b.renderPage=function(a,c,b,f,h,m){var d=v.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:d.className="geDisableMathJax";return d}}b.open(null,null,h,!0)}else{g=c.background;if(null==g||""==g||g==mxConstants.NONE)g="#ffffff";b.backgroundColor=g;b.autoOrigin=t;b.appendGraph(c,q,d,e,h,!0)}return b}var f=parseInt(P.value)/100;isNaN(f)&&(f=1,P.value="100 %");var f=.75*f,m=n.value,e=l.value,d=!u.checked,g=null;
+d&&(d=m==t&&e==t);if(!d&&null!=a.pages&&a.pages.length){var q=0,d=a.pages.length-1;u.checked||(q=parseInt(m)-1,d=parseInt(e)-1);for(var v=q;v<=d;v++){var k=a.pages[v],m=k==a.currentPage?h:null;if(null==m){var m=a.createTemporaryGraph(h.getStylesheet()),e=!0,q=!1,w=null,y=null;null==k.viewState&&null==k.mapping&&null==k.root&&a.updatePageRoot(k);null!=k.viewState?(e=k.viewState.pageVisible,q=k.viewState.mathEnabled,w=k.viewState.background,y=k.viewState.backgroundImage):null!=k.mapping&&null!=k.mapping.diagramMap&&
+(q="0"!=k.mapping.diagramMap.get("mathEnabled"),w=k.mapping.diagramMap.get("background"),y=k.mapping.diagramMap.get("backgroundImage"),y=null!=y&&0<y.length?JSON.parse(y):null);m.background=w;m.backgroundImage=null!=y?new mxImage(y.src,y.width,y.height):null;m.pageVisible=e;m.mathEnabled=q;var A=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?v+1:A.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(k);m.model.setRoot(k.root)}g=
+b(m,g,v!=d);m!=h&&m.container.parentNode.removeChild(m.container)}}else g=b(h);g.mathEnabled&&(d=g.wnd.document,d.writeln('<script type="text/x-mathjax-config">'),d.writeln("MathJax.Hub.Config({"),d.writeln('messageStyle: "none",'),d.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),d.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),d.writeln("TeX: {"),d.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),
+d.writeln("},"),d.writeln("tex2jax: {"),d.writeln('\tignoreClass: "geDisableMathJax"'),d.writeln("},"),d.writeln("asciimath2jax: {"),d.writeln('\tignoreClass: "geDisableMathJax"'),d.writeln("}"),d.writeln("});"),c&&(d.writeln("MathJax.Hub.Queue(function () {"),d.writeln("window.print();"),d.writeln("});")),d.writeln("\x3c/script>"),d.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));g.closeDocument();!g.mathEnabled&&c&&PrintDialog.printPreview(g)}
+var h=a.editor.graph,d=document.createElement("div"),e=document.createElement("h3");e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,c||mxResources.get("print"));d.appendChild(e);var g=1,t=1,q=document.createElement("div");q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","all");u.setAttribute("type","radio");
+u.setAttribute("name","pages-printdialog");q.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("printAllPages"));q.appendChild(e);mxUtils.br(q);var k=u.cloneNode(!0);u.setAttribute("checked","checked");k.setAttribute("value","range");q.appendChild(k);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");q.appendChild(e);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type",
+"number");n.setAttribute("min","1");n.style.width="50px";q.appendChild(n);e=document.createElement("span");mxUtils.write(e,mxResources.get("to"));q.appendChild(e);var l=n.cloneNode(!0);q.appendChild(l);mxEvent.addListener(n,"focus",function(){k.checked=!0});mxEvent.addListener(l,"focus",function(){k.checked=!0});mxEvent.addListener(n,"change",b);mxEvent.addListener(l,"change",b);if(null!=a.pages&&(g=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){t=e+
+1;n.value=t;l.value=t;break}n.setAttribute("max",g);l.setAttribute("max",g);1<g&&d.appendChild(q);var w=document.createElement("div");w.style.marginBottom="10px";var y=document.createElement("input");y.style.marginRight="8px";y.setAttribute("value","adjust");y.setAttribute("type","radio");y.setAttribute("name","printZoom");w.appendChild(y);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));w.appendChild(e);var p=document.createElement("input");p.style.cssText="margin:0 8px 0 8px;";
+p.setAttribute("value","100 %");p.style.width="50px";w.appendChild(p);mxEvent.addListener(p,"focus",function(){y.checked=!0});d.appendChild(w);var q=q.cloneNode(!1),z=y.cloneNode(!0);z.setAttribute("value","fit");y.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(z);q.appendChild(e);w=document.createElement("table");w.style.display="inline-block";var N=document.createElement("tbody"),
+M=document.createElement("tr"),W=M.cloneNode(!0),I=document.createElement("td"),Q=I.cloneNode(!0),Z=I.cloneNode(!0),J=I.cloneNode(!0),V=I.cloneNode(!0),T=I.cloneNode(!0);I.style.textAlign="right";J.style.textAlign="right";mxUtils.write(I,mxResources.get("fitTo"));var R=document.createElement("input");R.style.cssText="margin:0 8px 0 8px;";R.setAttribute("value","1");R.setAttribute("min","1");R.setAttribute("type","number");R.style.width="40px";Q.appendChild(R);e=document.createElement("span");mxUtils.write(e,
+mxResources.get("fitToSheetsAcross"));Z.appendChild(e);mxUtils.write(J,mxResources.get("fitToBy"));var U=R.cloneNode(!0);V.appendChild(U);mxEvent.addListener(R,"focus",function(){z.checked=!0});mxEvent.addListener(U,"focus",function(){z.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));T.appendChild(e);M.appendChild(I);M.appendChild(Q);M.appendChild(Z);W.appendChild(J);W.appendChild(V);W.appendChild(T);N.appendChild(M);N.appendChild(W);w.appendChild(N);
+q.appendChild(w);d.appendChild(q);q=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom="12px";mxUtils.write(e,mxResources.get("paperSize"));q.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var X=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);q.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));q.appendChild(e);
+var P=document.createElement("input");P.style.cssText="margin:0 8px 0 8px;";P.setAttribute("value","100 %");P.style.width="60px";q.appendChild(P);d.appendChild(q);e=document.createElement("div");e.style.cssText="text-align:right;margin:62px 0 0 0;";q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&e.appendChild(q);a.isOffline()||(w=mxUtils.button(mxResources.get("help"),function(){h.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
+w.className="geBtn",e.appendChild(w));PrintDialog.previewEnabled&&(w=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();f(!1)}),w.className="geBtn",e.appendChild(w));w=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();f(!0)});w.className="geBtn gePrimaryBtn";e.appendChild(w);a.editor.cancelFirst||e.appendChild(q);d.appendChild(e);this.container=d};var w=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)):(w.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))}})();
+(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,d,b){b.ui=a.ui;return d};a.afterDecode=function(a,d,b){b.previousColor=b.color;b.previousImage=b.image;b.previousFormat=b.format;null!=b.foldingEnabled&&(b.foldingEnabled=!b.foldingEnabled);null!=b.mathEnabled&&(b.mathEnabled=!b.mathEnabled);null!=b.shadowVisible&&(b.shadowVisible=!b.shadowVisible);return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="8.5.2";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);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;(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"),h=new Image;h.onload=function(){try{b.getContext("2d").drawImage(h,0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index f01330a8..1243e260 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -1487,6 +1487,7 @@
mxStencilRegistry.libraries['atlassian'] = [STENCIL_PATH + '/atlassian.xml'];
mxStencilRegistry.libraries['bpmn'] = [SHAPES_PATH + '/bpmn/mxBpmnShape2.js', STENCIL_PATH + '/bpmn.xml'];
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'];
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
index a0985f36..1f2ea488 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
@@ -24,6 +24,7 @@
this.createVertexTemplateEntry(s2 + 'cone', w, h, '', 'Cone', null, null, this.getTagsForStencil(gn, 'cone', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'cone2;dx=0.5;dy=0.9;', w, h, '', 'Cone (adjustable)', null, null, this.getTagsForStencil(gn, 'cone', dt).join(' ')),
this.createVertexTemplateEntry(s + 'document', w, h, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'donut;dx=25;', w, h, '', 'Donut', null, null, this.getTagsForStencil(gn, 'donut', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'drop', w * 0.7, h, '', 'Drop', null, null, this.getTagsForStencil(gn, 'drop', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'flash', w * 0.6, h, '', 'Flash', null, null, this.getTagsForStencil(gn, 'flash', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'half_circle', w, h * 0.5, '', 'Half Circle', null, null, this.getTagsForStencil(gn, 'half_circle', dt).join(' ')),
@@ -40,15 +41,29 @@
this.createVertexTemplateEntry(s + 'pentagon', w, h * 0.9, '', 'Pentagon', null, null, this.getTagsForStencil(gn, 'pentagon', dt).join(' ')),
this.createVertexTemplateEntry(s + 'pointed_oval', w * 0.5, h, '', 'Pointed Oval', null, null, this.getTagsForStencil(gn, 'pointed oval', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;', w, h, '', 'Pyramid', null, null, this.getTagsForStencil(gn, 'pyramid', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'diag_snip_rect;dx=6;', w, h * 0.6, '', 'Diagonal Snip Rectangle', null, null, this.getTagsForStencil(gn, 'diag_snip_rect', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'diag_round_rect;dx=6;', w, h * 0.6, '', 'Diagonal Rounded Rectangle', null, null, this.getTagsForStencil(gn, 'diag_round_rect', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'corner_round_rect;dx=6;', w, h * 0.6, '', 'Corner Rounded Rectangle', null, null, this.getTagsForStencil(gn, 'corner_round_rect', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'plaque;dx=6;', w, h * 0.6, '', 'Plaque', null, null, this.getTagsForStencil(gn, 'plaque', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'frame;dx=10;', w, h * 0.6, '', 'Frame', null, null, this.getTagsForStencil(gn, 'frame', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'rounded_frame;dx=10;', w, h * 0.6, '', 'Rounded Frame', null, null, this.getTagsForStencil(gn, 'rounded_frame', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'plaque_frame;dx=10;', w, h * 0.6, '', 'Plaque Frame', null, null, this.getTagsForStencil(gn, 'plaque_frame', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'frame_corner;dx=10;', w, h * 0.6, '', 'Frame Corner', null, null, this.getTagsForStencil(gn, 'frame_corner', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'diag_stripe;dx=10;', w, h * 0.6, '', 'Diagonal Stripe', null, null, this.getTagsForStencil(gn, 'diag_stripe', dt).join(' ')),
this.createVertexTemplateEntry(s + 'rectCallout;dx=30;dy=15;boundedLbl=1;', w, h * 0.6, '', 'Rectangular Callout', null, null, this.getTagsForStencil(gn, 'rectangular_callout', dt).join(' ')),
this.createVertexTemplateEntry(s + 'roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;', w, h * 0.6, '', 'Rounded Rectangular Callout', null, null, this.getTagsForStencil(gn, 'rectangular_callout', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'layered_rect;dx=10;', w, h * 0.6, '', 'Layered Rectangle', null, null, this.getTagsForStencil(gn, 'layered_rect', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'smiley', w, h, '', 'Smiley', null, null, this.getTagsForStencil(gn, 'smiley', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'star', w, h * 0.95, '', 'Star', null, null, this.getTagsForStencil(gn, 'star', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'sun', w, h, '', 'Sun', null, null, this.getTagsForStencil(gn, 'sun', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'tick', w * 0.85, h, '', 'Tick', null, null, this.getTagsForStencil(gn, 'tick', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'wave2;dy=0.3;', w, h * 0.6, '', 'Wave', null, null, this.getTagsForStencil(gn, 'wave', dt).join(' ')),
- this.createVertexTemplateEntry(s2 + 'x', w, h, '', 'X', null, null, this.getTagsForStencil(gn, 'x', dt).join(' '))
-
+ this.createVertexTemplateEntry('labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.button;dx=10;', w, h * 0.6, 'Button', 'Button', null, null, this.getTagsForStencil(gn, 'button', dt).join(' ')),
+ this.createVertexTemplateEntry('labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.shaded_button;dx=10;fillColor=#E6E6E6;strokeColor=none;', w, h * 0.6, 'Button', 'Button (shaded)', null, null, this.getTagsForStencil(gn, 'button', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'x', w, h, '', 'X', null, null, this.getTagsForStencil(gn, 'x', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'pie;startAngle=0.2;endAngle=0.9;', w, h, '', 'Pie', null, null, this.getTagsForStencil(gn, 'pie', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'arc;startAngle=0.3;endAngle=0.1;', w, h, '', 'Arc', null, null, this.getTagsForStencil(gn, 'arc', dt).join(' ')),
+ this.createVertexTemplateEntry(s2 + 'partConcEllipse;startAngle=0.25;endAngle=0.1;arcWidth=0.5;', w, h, '', 'Partial Concentric Ellipse', null, null, this.getTagsForStencil(gn, 'partConcEllipse', dt).join(' '))
]);
};
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Flowchart.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Flowchart.js
index 1fdaa633..503f479b 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Flowchart.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Flowchart.js
@@ -6,6 +6,7 @@
var h = 100;
var s = 'strokeWidth=2;html=1;shape=mxgraph.flowchart.';
var s2 = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;html=1;strokeWidth=2;shape=mxgraph.flowchart.';
+ var s3 = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;html=1;strokeWidth=2;shape=';
var gn = 'mxgraph.flowchart';
var dt = '';
@@ -13,29 +14,29 @@
[
this.createVertexTemplateEntry(s + 'annotation_1;align=left;', w * 0.5, h, '', 'Annotation', null, null, this.getTagsForStencil(gn, 'annotation_1', dt).join(' ')),
this.createVertexTemplateEntry(s + 'annotation_2;align=left;', w * 0.5, h, '', 'Annotation', null, null, this.getTagsForStencil(gn, 'annotation_2', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'card;whiteSpace=wrap;', w, h * 0.6, '', 'Card', null, null, this.getTagsForStencil(gn, 'card', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'card;whiteSpace=wrap;size=20;arcSize=12;', w, h * 0.6, '', 'Card', null, null, this.getTagsForStencil(gn, 'card', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'collate;', w, h, '', 'Collate', null, null, this.getTagsForStencil(gn, 'collate', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'data;whiteSpace=wrap;', w, h * 0.6, '', 'Data', null, null, this.getTagsForStencil(gn, 'data', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;rounded=1;arcSize=12;size=0.23;', w, h * 0.6, '', 'Data', null, null, this.getTagsForStencil(gn, 'data', dt).join(' ')),
this.createVertexTemplateEntry(s + 'database;whiteSpace=wrap;', w * 0.6, h * 0.6, '', 'Database', null, null, this.getTagsForStencil(gn, 'database', dt).join(' ')),
this.createVertexTemplateEntry(s + 'decision;whiteSpace=wrap;', w, h, '', 'Decision', null, null, this.getTagsForStencil(gn, 'decision', dt).join(' ')),
this.createVertexTemplateEntry(s + 'delay;whiteSpace=wrap;', w, h * 0.6, '', 'Delay', null, null, this.getTagsForStencil(gn, 'delay', dt).join(' ')),
this.createVertexTemplateEntry(s + 'direct_data;whiteSpace=wrap;', w, h * 0.6, '', 'Direct Data', null, null, this.getTagsForStencil(gn, 'direct_data', dt).join(' ')),
this.createVertexTemplateEntry(s + 'display;whiteSpace=wrap;', w, h * 0.6, '', 'Display', null, null, this.getTagsForStencil(gn, 'display', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'document;whiteSpace=wrap;', w, h * 0.6, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
+ this.createVertexTemplateEntry(s + 'document2;whiteSpace=wrap;size=0.25;', w, h * 0.6, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
this.createVertexTemplateEntry(s + 'extract_or_measurement;whiteSpace=wrap;', w * 0.95, h * 0.6, '', 'Extract or Measurement', null, null, this.getTagsForStencil(gn, 'extract_or_measurement', dt).join(' ')),
this.createVertexTemplateEntry(s + 'internal_storage;whiteSpace=wrap;', w * 0.7, h * 0.7, '', 'Internal Storage', null, null, this.getTagsForStencil(gn, 'internal_storage', dt).join(' ')),
this.createVertexTemplateEntry(s + 'loop_limit;whiteSpace=wrap;', w, h * 0.6, '', 'Loop Limit', null, null, this.getTagsForStencil(gn, 'loop_limit', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'manual_input;whiteSpace=wrap;', w, h * 0.6, '', 'Manual Input', null, null, this.getTagsForStencil(gn, 'manual_input', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'manual_operation;whiteSpace=wrap;', w, h * 0.6, '', 'Manual Operation', null, null, this.getTagsForStencil(gn, 'manual_operation', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'manualInput;whiteSpace=wrap;rounded=1;size=26;arcSize=11;', w, h * 0.6, '', 'Manual Input', null, null, this.getTagsForStencil(gn, 'manual_input', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;size=0.23;arcSize=10;flipV=1;', w, h * 0.6, '', 'Manual Operation', null, null, this.getTagsForStencil(gn, 'manual_operation', dt).join(' ')),
this.createVertexTemplateEntry(s + 'merge_or_storage;whiteSpace=wrap;', w * 0.95, h * 0.6, '', 'Merge or Storage', null, null, this.getTagsForStencil(gn, 'merge_or_storage', dt).join(' ')),
this.createVertexTemplateEntry(s + 'multi-document;whiteSpace=wrap;', w * 0.88, h * 0.6, '', 'Multi-Document', null, null, this.getTagsForStencil(gn, 'multi-document', dt).join(' ')),
- this.createVertexTemplateEntry(s2 + 'off-page_reference;', w * 0.6, h * 0.6, '', 'Off-Page Reference', null, null, this.getTagsForStencil(gn, 'off-page_reference', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'offPageConnector;rounded=0;size=0.5;', w * 0.6, h * 0.6, '', 'Off-Page Reference', null, null, this.getTagsForStencil(gn, 'off-page_reference', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'on-page_reference;', w * 0.6, h * 0.6, '', 'On-Page Reference', null, null, this.getTagsForStencil(gn, 'on-page_reference', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'summing_function;', w * 0.7, h * 0.7, '', 'Or', null, null, this.getTagsForStencil(gn, 'summing_function', dt).join(' ')),
this.createVertexTemplateEntry(s + 'paper_tape;whiteSpace=wrap;', w, h * 0.65, '', 'Paper Tape', null, null, this.getTagsForStencil(gn, 'paper_tape', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'parallel_mode;', w * 0.95, h * 0.4, '', 'Parallel Mode', null, null, this.getTagsForStencil(gn, 'parallel_mode', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'predefined_process;whiteSpace=wrap;', w, h * 0.6, '', 'Predefined Process', null, null, this.getTagsForStencil(gn, 'predefined_process', dt).join(' ')),
- this.createVertexTemplateEntry(s + 'preparation;whiteSpace=wrap;', w, h * 0.6, '', 'Preparation', null, null, this.getTagsForStencil(gn, 'preparation', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'process;whiteSpace=wrap;rounded=1;size=0.14;arcSize=6;', w, h * 0.6, '', 'Predefined Process', null, null, this.getTagsForStencil(gn, 'predefined_process', dt).join(' ')),
+ this.createVertexTemplateEntry(s3 + 'hexagon;perimeter=hexagonPerimeter2;arcSize=6;size=0.27;', w, h * 0.6, '', 'Preparation', null, null, this.getTagsForStencil(gn, 'preparation', dt).join(' ')),
this.createVertexTemplateEntry(s + 'process;whiteSpace=wrap;', w, h, '', 'Process', null, null, this.getTagsForStencil(gn, 'process', dt).join(' ')),
this.createVertexTemplateEntry(s + 'sequential_data;whiteSpace=wrap;', w, h, '', 'Sequential Data', null, null, this.getTagsForStencil(gn, 'sequential_data', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'sort;', w, h, '', 'Sort', null, null, this.getTagsForStencil(gn, 'sort', dt).join(' ')),
diff --git a/src/main/webapp/js/embed-static.min.js b/src/main/webapp/js/embed-static.min.js
index 2e9f396b..c506a862 100644
--- a/src/main/webapp/js/embed-static.min.js
+++ b/src/main/webapp/js/embed-static.min.js
@@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+z.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;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:"8.5.0",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:"8.5.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")&&
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/src/main/webapp/js/reader.min.js b/src/main/webapp/js/reader.min.js
index c7e262b2..10b380b5 100644
--- a/src/main/webapp/js/reader.min.js
+++ b/src/main/webapp/js/reader.min.js
@@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+z.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;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:"8.5.0",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:"8.5.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")&&
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/src/main/webapp/js/shapes.min.js b/src/main/webapp/js/shapes.min.js
index b886276c..9ab7f818 100644
--- a/src/main/webapp/js/shapes.min.js
+++ b/src/main/webapp/js/shapes.min.js
@@ -1542,7 +1542,8 @@ mxShapeBasicOctagon.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d
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.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(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",this.isoAngle))));return new mxPoint(a.x,a.y+d)},function(a,e){this.state.style.isoAngle=Math.round(100*Math.max(0,Math.min(100,e.y-a.y)))/100})]};
+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.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})]};
@@ -1562,7 +1563,68 @@ Graph.handleFactory[mxShapeBasicPyramid.prototype.cst.PYRAMID]=function(a){var d
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.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+10)},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.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.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.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})]};
+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.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})]};
+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.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.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.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.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.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.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.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})]};
+function mxShapeBasicLayeredRect(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(mxShapeBasicLayeredRect,mxActor);mxShapeBasicLayeredRect.prototype.cst={LAYERED_RECT:"mxgraph.basic.layered_rect"};
+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.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})]};
+function mxShapeBasicShadedButton(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(mxShapeBasicShadedButton,mxActor);mxShapeBasicShadedButton.prototype.cst={SHADED_BUTTON:"mxgraph.basic.shaded_button"};
+mxShapeBasicShadedButton.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.setShadow(!1);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.fill();a.setFillColor("#ffffff");a.setAlpha(.25);a.begin();a.moveTo(0,c);a.lineTo(0,0);a.lineTo(d,d);a.lineTo(d,c-d);a.close();a.fill();a.setAlpha(.5);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b-d,d);a.lineTo(d,
+d);a.close();a.fill();a.setFillColor("#000000");a.setAlpha(.25);a.begin();a.moveTo(b,0);a.lineTo(b,c);a.lineTo(b-d,c-d);a.lineTo(b-d,d);a.close();a.fill();a.setAlpha(.5);a.begin();a.moveTo(0,c);a.lineTo(d,c-d);a.lineTo(b-d,c-d);a.lineTo(b,c);a.close();a.fill()};mxCellRenderer.registerShape(mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON,mxShapeBasicShadedButton);mxShapeBasicShadedButton.prototype.constraints=null;
+Graph.handleFactory[mxShapeBasicShadedButton.prototype.cst.SHADED_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})]};
+function mxShapeBasicPie(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}mxUtils.extend(mxShapeBasicPie,mxActor);mxShapeBasicPie.prototype.cst={PIE:"mxgraph.basic.pie"};
+mxShapeBasicPie.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle))));e=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle))));b*=.5;c*=.5;var f=b+Math.sin(d)*b,g=c-Math.cos(d)*c,h=b+Math.sin(e)*b,k=c-Math.cos(e)*c;d=e-d;0>d&&(d+=2*Math.PI);e=0;d>Math.PI&&(e=1);a.begin();a.moveTo(b,c);a.lineTo(f,g);a.arcTo(b,c,0,e,1,h,k);a.close();a.fillAndStroke()};
+mxCellRenderer.registerShape(mxShapeBasicPie.prototype.cst.PIE,mxShapeBasicPie);mxShapeBasicPie.prototype.constraints=null;
+Graph.handleFactory[mxShapeBasicPie.prototype.cst.PIE]=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,b){var c=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(b.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1,Math.min(1,(b.y-a.y-.5*
+a.height)/(.5*a.height))))/100)/Math.PI;0>c&&(c=1+c);this.state.style.startAngle=c})];a=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,b){var c=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(b.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1,Math.min(1,(b.y-
+a.y-.5*a.height)/(.5*a.height))))/100)/Math.PI;0>c&&(c=1+c);this.state.style.endAngle=c});d.push(a);return d};function mxShapeBasicArc(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}mxUtils.extend(mxShapeBasicArc,mxActor);mxShapeBasicArc.prototype.cst={ARC:"mxgraph.basic.arc"};
+mxShapeBasicArc.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle))));e=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle))));b*=.5;c*=.5;var f=b+Math.sin(d)*b,g=c-Math.cos(d)*c,h=b+Math.sin(e)*b,k=c-Math.cos(e)*c;d=e-d;0>d&&(d+=2*Math.PI);e=0;d>Math.PI&&(e=1);a.begin();a.moveTo(f,g);a.arcTo(b,c,0,e,1,h,k);a.stroke()};
+mxCellRenderer.registerShape(mxShapeBasicArc.prototype.cst.ARC,mxShapeBasicArc);mxShapeBasicArc.prototype.constraints=null;
+Graph.handleFactory[mxShapeBasicArc.prototype.cst.ARC]=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,b){var c=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(b.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1,Math.min(1,(b.y-a.y-.5*
+a.height)/(.5*a.height))))/100)/Math.PI;0>c&&(c=1+c);this.state.style.startAngle=c})];a=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,b){var c=.5*Math.atan2(Math.round(100*Math.max(-1,Math.min(1,(b.x-a.x-.5*a.width)/(.5*a.width))))/100,-Math.round(100*Math.max(-1,Math.min(1,(b.y-
+a.y-.5*a.height)/(.5*a.height))))/100)/Math.PI;0>c&&(c=1+c);this.state.style.endAngle=c});d.push(a);return d};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.basic.partConcEllipse"};
+mxShapeBasicPartConcEllipse.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle))));e=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle))));var f=1-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arcWidth",this.arcWidth))));b*=.5;c*=.5;var g=b*f,f=c*f,h=b+Math.sin(d)*b,k=c-Math.cos(d)*c,l=b+Math.sin(d)*g,n=c-Math.cos(d)*f,m=b+
+Math.sin(e)*b,p=c-Math.cos(e)*c,q=b+Math.sin(e)*g,u=c-Math.cos(e)*f;d=e-d;0>d&&(d+=2*Math.PI);e=0;d>Math.PI&&(e=1);a.begin();a.moveTo(h,k);a.arcTo(b,c,0,e,1,m,p);a.lineTo(q,u);a.arcTo(g,f,0,e,0,l,n);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE,mxShapeBasicPartConcEllipse);mxShapeBasicPartConcEllipse.prototype.constraints=null;
+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 mxShapeBootstrapRRect(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeBootstrapRRect,mxShape);mxShapeBootstrapRRect.prototype.cst={PACKAGE:"mxgraph.bootstrap.rrect",R_SIZE:"rSize"};mxShapeBootstrapRRect.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=parseInt(mxUtils.getValue(this.style,mxShapeBootstrapRRect.prototype.cst.R_SIZE,"10"));a.roundrect(0,0,b,c,d);a.fillAndStroke()};
mxCellRenderer.registerShape(mxShapeBootstrapRRect.prototype.cst.PACKAGE,mxShapeBootstrapRRect);function mxShapeBootstrapTopButton(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeBootstrapTopButton,mxShape);mxShapeBootstrapTopButton.prototype.cst={TOP_BUTTON:"mxgraph.bootstrap.topButton",R_SIZE:"rSize"};
mxShapeBootstrapTopButton.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=parseInt(mxUtils.getValue(this.style,mxShapeBootstrapTopButton.prototype.cst.R_SIZE,"10"));a.begin();a.moveTo(0,d);a.arcTo(d,d,0,0,1,d,0);a.lineTo(b-d,0);a.arcTo(d,d,0,0,1,b,d);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeBootstrapTopButton.prototype.cst.TOP_BUTTON,mxShapeBootstrapTopButton);
@@ -1681,8 +1743,11 @@ function mxFloorplanDoorLeft(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill
mxFloorplanDoorLeft.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,5);a.fillAndStroke();a.begin();a.moveTo(b,5);a.arcTo(b,b,0,0,1,0,5+b);a.lineTo(0,5);a.stroke()};mxCellRenderer.registerShape(mxFloorplanDoorLeft.prototype.cst.DOOR_LEFT,mxFloorplanDoorLeft);function mxFloorplanDoorRight(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxFloorplanDoorRight,mxShape);mxFloorplanDoorRight.prototype.cst={DOOR_RIGHT:"mxgraph.floorplan.doorRight"};
mxFloorplanDoorRight.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)};mxFloorplanDoorRight.prototype.background=function(a,d,e,b,c){a.rect(0,0,b,5);a.fillAndStroke();a.begin();a.moveTo(0,5);a.arcTo(b,b,0,0,0,b,5+b);a.lineTo(b,5);a.stroke()};mxCellRenderer.registerShape(mxFloorplanDoorRight.prototype.cst.DOOR_RIGHT,mxFloorplanDoorRight);
function mxFloorplanDoorDouble(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxFloorplanDoorDouble,mxShape);mxFloorplanDoorDouble.prototype.cst={DOOR_DOUBLE:"mxgraph.floorplan.doorDouble"};mxFloorplanDoorDouble.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);this.background(a,d,e,b,c)};
-mxFloorplanDoorDouble.prototype.background=function(a,d,e,b,c){d=.5*b;a.rect(0,0,b,5);a.fillAndStroke();a.begin();a.moveTo(d,0);a.lineTo(d,5);a.moveTo(d,5);a.arcTo(d,d,0,0,1,0,5+d);a.lineTo(0,5);a.moveTo(d,5);a.arcTo(d,d,0,0,0,b,5+d);a.lineTo(b,5);a.stroke()};mxCellRenderer.registerShape(mxFloorplanDoorDouble.prototype.cst.DOOR_DOUBLE,mxFloorplanDoorDouble);function mxShapeGmdlPlayer(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}
-mxUtils.extend(mxShapeGmdlPlayer,mxShape);mxShapeGmdlPlayer.prototype.cst={SHAPE_PLAYER:"mxgraph.gmdl.player"};mxShapeGmdlPlayer.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.rect(0,0,b,c);a.fill();a.setShadow(!1);this.foreground(a,d,e,b,c)};
+mxFloorplanDoorDouble.prototype.background=function(a,d,e,b,c){d=.5*b;a.rect(0,0,b,5);a.fillAndStroke();a.begin();a.moveTo(d,0);a.lineTo(d,5);a.moveTo(d,5);a.arcTo(d,d,0,0,1,0,5+d);a.lineTo(0,5);a.moveTo(d,5);a.arcTo(d,d,0,0,0,b,5+d);a.lineTo(b,5);a.stroke()};mxCellRenderer.registerShape(mxFloorplanDoorDouble.prototype.cst.DOOR_DOUBLE,mxFloorplanDoorDouble);
+function mxShapeFlowchartDocument2(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.size=.5}mxUtils.extend(mxShapeFlowchartDocument2,mxActor);mxShapeFlowchartDocument2.prototype.cst={DOCUMENT2:"mxgraph.flowchart.document2"};
+mxShapeFlowchartDocument2.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.begin();a.moveTo(b-5,0);a.arcTo(5,5,0,0,1,b,5);a.lineTo(b,c-d/2);a.quadTo(3*b/4,c-1.4*d,b/2,c-d/2);a.quadTo(b/4,c-d*(1-1.4),0,c-d/2);a.lineTo(0,d/2);a.lineTo(0,5);a.arcTo(5,5,0,0,1,5,0);a.close();a.fillAndStroke()};mxCellRenderer.registerShape(mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2,mxShapeFlowchartDocument2);
+mxShapeFlowchartDocument2.prototype.constraints=null;Graph.handleFactory[mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2]=function(a){return[Graph.createHandle(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-d)*a.height)},function(a,e){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-e.y)/a.height))})]};
+function mxShapeGmdlPlayer(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeGmdlPlayer,mxShape);mxShapeGmdlPlayer.prototype.cst={SHAPE_PLAYER:"mxgraph.gmdl.player"};mxShapeGmdlPlayer.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.rect(0,0,b,c);a.fill();a.setShadow(!1);this.foreground(a,d,e,b,c)};
mxShapeGmdlPlayer.prototype.foreground=function(a,d,e,b,c){4<=c&&(a.setFillColor("#FFED00"),a.begin(),a.rect(0,0,.8*b,4),a.fill());14<=c&&33<=b&&(a.setFillColor("#717171"),a.begin(),a.rect(b-33,.5*c-7,4,14),a.fill(),a.begin(),a.rect(b-25,.5*c-7,4,14),a.fill())};mxCellRenderer.registerShape(mxShapeGmdlPlayer.prototype.cst.SHAPE_PLAYER,mxShapeGmdlPlayer);function mxShapeGmdlSwitch(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}
mxUtils.extend(mxShapeGmdlSwitch,mxShape);mxShapeGmdlSwitch.prototype.cst={SHAPE_SWITCH:"mxgraph.gmdl.switch",STATE:"switchState",STATE_ON:"on",STATE_OFF:"off"};mxShapeGmdlSwitch.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);var f=mxUtils.getValue(this.style,mxShapeGmdlSwitch.prototype.cst.STATE,mxShapeGmdlSwitch.prototype.cst.STATE_ON);this.background(a,d,e,b,c,f);a.setShadow(!0);this.foreground(a,d,e,b,c,f)};
mxShapeGmdlSwitch.prototype.background=function(a,d,e,b,c,f){a.begin();f===mxShapeGmdlSwitch.prototype.cst.STATE_ON?(a.save(),a.setAlpha("0.5"),a.moveTo(.135*b,.8*c),a.arcTo(.135*b,.3*c,0,0,1,.135*b,.2*c),a.lineTo(.675*b,.2*c),a.arcTo(.135*b,.3*c,0,0,1,.675*b,.8*c),a.close(),a.fillAndStroke(),a.restore()):(a.setFillColor("#BCBBBB"),a.moveTo(.225*b,.8*c),a.arcTo(.135*b,.3*c,0,0,1,.225*b,.2*c),a.lineTo(.865*b,.2*c),a.arcTo(.135*b,.3*c,0,0,1,.865*b,.8*c),a.close(),a.fillAndStroke())};
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 6b24794a..76ee129a 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -2675,32 +2675,32 @@ g.setAttribute("in","blur");g.setAttribute("dx",this.svgShadowSize);g.setAttribu
c.createElement("feComposite");g.setAttribute("in","offsetColor");g.setAttribute("in2","offsetBlur");g.setAttribute("operator","in");g.setAttribute("result","offsetBlur");f.appendChild(g);g=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feBlend"):c.createElement("feBlend");g.setAttribute("in","SourceGraphic");g.setAttribute("in2","offsetBlur");f.appendChild(g);g=a.getElementsByTagName("defs");0==g.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=g[0];c.appendChild(f);b||((d||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 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"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];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["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.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.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 h=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,g,e,p,m,k){if(null!=b&&null==mxMarker.markers[b]){var u=this.getPackageForType(b);null!=u&&mxStencilRegistry.getStencil(u)}return h.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){l.value=Math.max(1,
-Math.min(h,Math.max(parseInt(l.value),parseInt(w.value))));w.value=Math.max(1,Math.min(h,Math.min(parseInt(l.value),parseInt(w.value))))}function c(d){function b(d,b,f){var g=d.getGraphBounds(),e=0,h=0,p=Y.get(),m=1/d.pageScale,k=t.checked;if(k)var m=parseInt(T.value),r=parseInt(V.value),m=Math.min(p.height*r/(g.height/d.view.scale),p.width*m/(g.width/d.view.scale));else m=parseInt(q.value)/(100*d.pageScale),isNaN(m)&&(c=1/d.pageScale,q.value="100 %");p=mxRectangle.fromRectangle(p);p.width=Math.ceil(p.width*
-c);p.height=Math.ceil(p.height*c);m*=c;!k&&d.pageVisible?(g=d.getPageLayout(),e-=g.x*p.width,h-=g.y*p.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,m,p,0,e,h,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 w=b.renderPage;b.renderPage=
-function(a,d,b,c,f,g){var e=w.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:e.className="geDisableMathJax";return e}}b.open(null,null,f,!0)}else{p=d.background;if(null==p||""==p||p==mxConstants.NONE)p="#ffffff";b.backgroundColor=p;b.autoOrigin=k;b.appendGraph(d,m,e,h,f,!0)}return b}var c=parseInt(M.value)/100;isNaN(c)&&(c=1,M.value="100 %");var c=.75*c,g=w.value,e=l.value,h=!k.checked,m=null;h&&(h=g==p&&e==p);if(!h&&null!=a.pages&&a.pages.length){var r=0,h=a.pages.length-1;k.checked||
-(r=parseInt(g)-1,h=parseInt(e)-1);for(var u=r;u<=h;u++){var x=a.pages[u],g=x==a.currentPage?f:null;if(null==g){var g=a.createTemporaryGraph(f.getStylesheet()),e=!0,r=!1,n=null,v=null;null==x.viewState&&null==x.mapping&&null==x.root&&a.updatePageRoot(x);null!=x.viewState?(e=x.viewState.pageVisible,r=x.viewState.mathEnabled,n=x.viewState.background,v=x.viewState.backgroundImage):null!=x.mapping&&null!=x.mapping.diagramMap&&(r="0"!=x.mapping.diagramMap.get("mathEnabled"),n=x.mapping.diagramMap.get("background"),
-v=x.mapping.diagramMap.get("backgroundImage"),v=null!=v&&0<v.length?JSON.parse(v):null);g.background=n;g.backgroundImage=null!=v?new mxImage(v.src,v.width,v.height):null;g.pageVisible=e;g.mathEnabled=r;var A=g.getGlobalVariable;g.getGlobalVariable=function(a){return"page"==a?x.getName():"pagenumber"==a?u+1:A.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(x);g.model.setRoot(x.root)}m=b(g,m,u!=h);g!=f&&g.container.parentNode.removeChild(g.container)}}else m=b(f);m.mathEnabled&&
-(h=m.wnd.document,h.writeln('<script type="text/x-mathjax-config">'),h.writeln("MathJax.Hub.Config({"),h.writeln('messageStyle: "none",'),h.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),h.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),h.writeln("TeX: {"),h.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),h.writeln("},"),h.writeln("tex2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("},"),
-h.writeln("asciimath2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("}"),h.writeln("});"),d&&(h.writeln("MathJax.Hub.Queue(function () {"),h.writeln("window.print();"),h.writeln("});")),h.writeln("\x3c/script>"),h.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));m.closeDocument();!m.mathEnabled&&d&&PrintDialog.printPreview(m)}var f=a.editor.graph,g=document.createElement("div"),e=document.createElement("h3");
-e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,d||mxResources.get("print"));g.appendChild(e);var h=1,p=1,m=document.createElement("div");m.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");m.appendChild(k);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("printAllPages"));m.appendChild(e);mxUtils.br(m);var u=k.cloneNode(!0);k.setAttribute("checked","checked");u.setAttribute("value","range");m.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");m.appendChild(e);var w=document.createElement("input");w.style.cssText="margin:0 8px 0 8px;";w.setAttribute("value","1");w.setAttribute("type","number");w.setAttribute("min","1");w.style.width="50px";m.appendChild(w);e=document.createElement("span");
-mxUtils.write(e,mxResources.get("to"));m.appendChild(e);var l=w.cloneNode(!0);m.appendChild(l);mxEvent.addListener(w,"focus",function(){u.checked=!0});mxEvent.addListener(l,"focus",function(){u.checked=!0});mxEvent.addListener(w,"change",b);mxEvent.addListener(l,"change",b);if(null!=a.pages&&(h=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){p=e+1;w.value=p;l.value=p;break}w.setAttribute("max",h);l.setAttribute("max",h);1<h&&g.appendChild(m);var n=document.createElement("div");
-n.style.marginBottom="10px";var v=document.createElement("input");v.style.marginRight="8px";v.setAttribute("value","adjust");v.setAttribute("type","radio");v.setAttribute("name","printZoom");n.appendChild(v);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));n.appendChild(e);var q=document.createElement("input");q.style.cssText="margin:0 8px 0 8px;";q.setAttribute("value","100 %");q.style.width="50px";n.appendChild(q);mxEvent.addListener(q,"focus",function(){v.checked=!0});
-g.appendChild(n);var m=m.cloneNode(!1),t=v.cloneNode(!0);t.setAttribute("value","fit");v.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(t);m.appendChild(e);n=document.createElement("table");n.style.display="inline-block";var G=document.createElement("tbody"),K=document.createElement("tr"),S=K.cloneNode(!0),J=document.createElement("td"),N=J.cloneNode(!0),U=J.cloneNode(!0),D=J.cloneNode(!0),
-W=J.cloneNode(!0),O=J.cloneNode(!0);J.style.textAlign="right";D.style.textAlign="right";mxUtils.write(J,mxResources.get("fitTo"));var T=document.createElement("input");T.style.cssText="margin:0 8px 0 8px;";T.setAttribute("value","1");T.setAttribute("min","1");T.setAttribute("type","number");T.style.width="40px";N.appendChild(T);e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsAcross"));U.appendChild(e);mxUtils.write(D,mxResources.get("fitToBy"));var V=T.cloneNode(!0);W.appendChild(V);
-mxEvent.addListener(T,"focus",function(){t.checked=!0});mxEvent.addListener(V,"focus",function(){t.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));O.appendChild(e);K.appendChild(J);K.appendChild(N);K.appendChild(U);S.appendChild(D);S.appendChild(W);S.appendChild(O);G.appendChild(K);G.appendChild(S);n.appendChild(G);m.appendChild(n);g.appendChild(m);m=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom=
-"12px";mxUtils.write(e,mxResources.get("paperSize"));m.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var Y=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));m.appendChild(e);var M=document.createElement("input");M.style.cssText="margin:0 8px 0 8px;";M.setAttribute("value","100 %");M.style.width="60px";m.appendChild(M);
-g.appendChild(m);e=document.createElement("div");e.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&&e.appendChild(m);a.isOffline()||(n=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),n.className="geBtn",e.appendChild(n));PrintDialog.previewEnabled&&(n=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();
-c(!1)}),n.className="geBtn",e.appendChild(n));n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";e.appendChild(n);a.editor.cancelFirst||e.appendChild(m);g.appendChild(e);this.container=g};var w=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)):(w.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))}})();
+mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml"];mxStencilRegistry.libraries.bpmn=[SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];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["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.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.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 h=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,g,e,p,m,k){if(null!=b&&null==mxMarker.markers[b]){var u=this.getPackageForType(b);null!=u&&mxStencilRegistry.getStencil(u)}return h.apply(this,arguments)};
+PrintDialog.prototype.create=function(a,d){function b(){l.value=Math.max(1,Math.min(h,Math.max(parseInt(l.value),parseInt(w.value))));w.value=Math.max(1,Math.min(h,Math.min(parseInt(l.value),parseInt(w.value))))}function c(d){function b(d,b,f){var g=d.getGraphBounds(),e=0,h=0,p=Y.get(),m=1/d.pageScale,k=t.checked;if(k)var m=parseInt(T.value),r=parseInt(V.value),m=Math.min(p.height*r/(g.height/d.view.scale),p.width*m/(g.width/d.view.scale));else m=parseInt(q.value)/(100*d.pageScale),isNaN(m)&&(c=1/
+d.pageScale,q.value="100 %");p=mxRectangle.fromRectangle(p);p.width=Math.ceil(p.width*c);p.height=Math.ceil(p.height*c);m*=c;!k&&d.pageVisible?(g=d.getPageLayout(),e-=g.x*p.width,h-=g.y*p.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,m,p,0,e,h,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 w=b.renderPage;b.renderPage=function(a,d,b,c,f,g){var e=w.apply(this,arguments);this.graph.mathEnabled?this.mathEnabled=!0:e.className="geDisableMathJax";return e}}b.open(null,null,f,!0)}else{p=d.background;if(null==p||""==p||p==mxConstants.NONE)p="#ffffff";b.backgroundColor=p;b.autoOrigin=k;b.appendGraph(d,m,e,h,f,!0)}return b}var c=parseInt(M.value)/100;isNaN(c)&&(c=1,M.value="100 %");var c=.75*c,g=w.value,e=l.value,h=!k.checked,m=null;
+h&&(h=g==p&&e==p);if(!h&&null!=a.pages&&a.pages.length){var r=0,h=a.pages.length-1;k.checked||(r=parseInt(g)-1,h=parseInt(e)-1);for(var u=r;u<=h;u++){var x=a.pages[u],g=x==a.currentPage?f:null;if(null==g){var g=a.createTemporaryGraph(f.getStylesheet()),e=!0,r=!1,n=null,v=null;null==x.viewState&&null==x.mapping&&null==x.root&&a.updatePageRoot(x);null!=x.viewState?(e=x.viewState.pageVisible,r=x.viewState.mathEnabled,n=x.viewState.background,v=x.viewState.backgroundImage):null!=x.mapping&&null!=x.mapping.diagramMap&&
+(r="0"!=x.mapping.diagramMap.get("mathEnabled"),n=x.mapping.diagramMap.get("background"),v=x.mapping.diagramMap.get("backgroundImage"),v=null!=v&&0<v.length?JSON.parse(v):null);g.background=n;g.backgroundImage=null!=v?new mxImage(v.src,v.width,v.height):null;g.pageVisible=e;g.mathEnabled=r;var A=g.getGlobalVariable;g.getGlobalVariable=function(a){return"page"==a?x.getName():"pagenumber"==a?u+1:A.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(x);g.model.setRoot(x.root)}m=
+b(g,m,u!=h);g!=f&&g.container.parentNode.removeChild(g.container)}}else m=b(f);m.mathEnabled&&(h=m.wnd.document,h.writeln('<script type="text/x-mathjax-config">'),h.writeln("MathJax.Hub.Config({"),h.writeln('messageStyle: "none",'),h.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),h.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),h.writeln("TeX: {"),h.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),
+h.writeln("},"),h.writeln("tex2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("},"),h.writeln("asciimath2jax: {"),h.writeln('\tignoreClass: "geDisableMathJax"'),h.writeln("}"),h.writeln("});"),d&&(h.writeln("MathJax.Hub.Queue(function () {"),h.writeln("window.print();"),h.writeln("});")),h.writeln("\x3c/script>"),h.writeln('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js">\x3c/script>'));m.closeDocument();!m.mathEnabled&&d&&PrintDialog.printPreview(m)}
+var f=a.editor.graph,g=document.createElement("div"),e=document.createElement("h3");e.style.width="100%";e.style.textAlign="center";e.style.marginTop="0px";mxUtils.write(e,d||mxResources.get("print"));g.appendChild(e);var h=1,p=1,m=document.createElement("div");m.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");m.appendChild(k);e=document.createElement("span");mxUtils.write(e,mxResources.get("printAllPages"));m.appendChild(e);mxUtils.br(m);var u=k.cloneNode(!0);k.setAttribute("checked","checked");u.setAttribute("value","range");m.appendChild(u);e=document.createElement("span");mxUtils.write(e,mxResources.get("pages")+":");m.appendChild(e);var w=document.createElement("input");w.style.cssText="margin:0 8px 0 8px;";w.setAttribute("value","1");w.setAttribute("type",
+"number");w.setAttribute("min","1");w.style.width="50px";m.appendChild(w);e=document.createElement("span");mxUtils.write(e,mxResources.get("to"));m.appendChild(e);var l=w.cloneNode(!0);m.appendChild(l);mxEvent.addListener(w,"focus",function(){u.checked=!0});mxEvent.addListener(l,"focus",function(){u.checked=!0});mxEvent.addListener(w,"change",b);mxEvent.addListener(l,"change",b);if(null!=a.pages&&(h=a.pages.length,null!=a.currentPage))for(e=0;e<a.pages.length;e++)if(a.currentPage==a.pages[e]){p=e+
+1;w.value=p;l.value=p;break}w.setAttribute("max",h);l.setAttribute("max",h);1<h&&g.appendChild(m);var n=document.createElement("div");n.style.marginBottom="10px";var v=document.createElement("input");v.style.marginRight="8px";v.setAttribute("value","adjust");v.setAttribute("type","radio");v.setAttribute("name","printZoom");n.appendChild(v);e=document.createElement("span");mxUtils.write(e,mxResources.get("adjustTo"));n.appendChild(e);var q=document.createElement("input");q.style.cssText="margin:0 8px 0 8px;";
+q.setAttribute("value","100 %");q.style.width="50px";n.appendChild(q);mxEvent.addListener(q,"focus",function(){v.checked=!0});g.appendChild(n);var m=m.cloneNode(!1),t=v.cloneNode(!0);t.setAttribute("value","fit");v.setAttribute("checked","checked");e=document.createElement("div");e.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";e.appendChild(t);m.appendChild(e);n=document.createElement("table");n.style.display="inline-block";var G=document.createElement("tbody"),
+K=document.createElement("tr"),S=K.cloneNode(!0),J=document.createElement("td"),N=J.cloneNode(!0),U=J.cloneNode(!0),D=J.cloneNode(!0),W=J.cloneNode(!0),O=J.cloneNode(!0);J.style.textAlign="right";D.style.textAlign="right";mxUtils.write(J,mxResources.get("fitTo"));var T=document.createElement("input");T.style.cssText="margin:0 8px 0 8px;";T.setAttribute("value","1");T.setAttribute("min","1");T.setAttribute("type","number");T.style.width="40px";N.appendChild(T);e=document.createElement("span");mxUtils.write(e,
+mxResources.get("fitToSheetsAcross"));U.appendChild(e);mxUtils.write(D,mxResources.get("fitToBy"));var V=T.cloneNode(!0);W.appendChild(V);mxEvent.addListener(T,"focus",function(){t.checked=!0});mxEvent.addListener(V,"focus",function(){t.checked=!0});e=document.createElement("span");mxUtils.write(e,mxResources.get("fitToSheetsDown"));O.appendChild(e);K.appendChild(J);K.appendChild(N);K.appendChild(U);S.appendChild(D);S.appendChild(W);S.appendChild(O);G.appendChild(K);G.appendChild(S);n.appendChild(G);
+m.appendChild(n);g.appendChild(m);m=document.createElement("div");e=document.createElement("div");e.style.fontWeight="bold";e.style.marginBottom="12px";mxUtils.write(e,mxResources.get("paperSize"));m.appendChild(e);e=document.createElement("div");e.style.marginBottom="12px";var Y=PageSetupDialog.addPageFormatPanel(e,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(e);e=document.createElement("span");mxUtils.write(e,mxResources.get("pageScale"));m.appendChild(e);
+var M=document.createElement("input");M.style.cssText="margin:0 8px 0 8px;";M.setAttribute("value","100 %");M.style.width="60px";m.appendChild(M);g.appendChild(m);e=document.createElement("div");e.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&&e.appendChild(m);a.isOffline()||(n=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
+n.className="geBtn",e.appendChild(n));PrintDialog.previewEnabled&&(n=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),n.className="geBtn",e.appendChild(n));n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";e.appendChild(n);a.editor.cancelFirst||e.appendChild(m);g.appendChild(e);this.container=g};var w=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)):(w.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))}})();
(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=/.*\.draw\.io$/.test(window.location.hostname);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=
diff --git a/src/main/webapp/plugins/cConf-1-4-8.js b/src/main/webapp/plugins/cConf-1-4-8.js
index 161dee64..1eacda24 100644
--- a/src/main/webapp/plugins/cConf-1-4-8.js
+++ b/src/main/webapp/plugins/cConf-1-4-8.js
@@ -156,8 +156,8 @@ Draw.loadPlugin(function(ui)
if (td != null)
{
- td.innerHTML = '<a title="faq" href="https://marketplace.atlassian.com/plugins/com.mxgraph.confluence.plugins.diagramly/cloud/reviews" target="_blank">' +
- '<img border="0" align="absmiddle" style="margin-top:-4px;"/>Enjoying this free plugin? Please help us to 4 stars.</a>';
+ td.innerHTML = '<a title="faq" href="/wiki/plugins/servlet/upm" target="_blank">' +
+ '<img border="0" align="absmiddle" style="margin-top:-4px;"/>Please license draw.io to enable all functionality</a>';
}
td = document.getElementById('geFooterItem1');
@@ -174,22 +174,4 @@ Draw.loadPlugin(function(ui)
td.parentNode.removeChild(td);
}
}
-
- var lang = urlParams['lang'];
- var site = urlParams['site'];
- var user = urlParams['user'];
-
- try
- {
- var img = new Image();
- img.src = 'https://log.draw.io/log?severity=CONFIG&msg=conf-cloud-edit' +
- ((lang != null) ? ':lang=' + encodeURIComponent(lang) : '') +
- ((site != null) ? ':site=' + encodeURIComponent(site) : '') +
- ((user != null) ? ':user=' + encodeURIComponent(user) : '') +
- '&v=' + encodeURIComponent(EditorUi.VERSION);
- }
- catch (e)
- {
- // not important, just don't break editing because of a log
- }
});
diff --git a/src/main/webapp/shapes/mxBasic.js b/src/main/webapp/shapes/mxBasic.js
index a83bbce7..fc29cff8 100644
--- a/src/main/webapp/shapes/mxBasic.js
+++ b/src/main/webapp/shapes/mxBasic.js
@@ -441,9 +441,10 @@ Graph.handleFactory[mxShapeBasicIsoCube.prototype.cst.ISO_CUBE] = function(state
{
var handles = [Graph.createHandle(state, ['isoAngle'], function(bounds)
{
- var isoAngle = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'isoAngle', this.isoAngle))));
+ var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.state.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ;
+ var isoH = Math.min(bounds.width * Math.tan(isoAngle), bounds.height * 0.5);
- return new mxPoint(bounds.x, bounds.y + isoAngle);
+ return new mxPoint(bounds.x, bounds.y + isoH);
}, function(bounds, pt)
{
this.state.style['isoAngle'] = Math.round(100 * Math.max(0, Math.min(100, pt.y - bounds.y))) / 100;
@@ -885,7 +886,7 @@ Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2] = f
{
var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
- return new mxPoint(bounds.x + dx * bounds.width / 2, bounds.y + 10);
+ return new mxPoint(bounds.x + dx * bounds.width / 2, bounds.y + dx * bounds.height / 2);
}, function(bounds, pt)
{
this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, 2 * (pt.x - bounds.x) / bounds.width))) / 100;
@@ -894,3 +895,1366 @@ Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2] = f
return handles;
};
+//**********************************************************************************************************************************************************
+//Diagonal Snip Rectangle
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicDiagSnipRect(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicDiagSnipRect, mxActor);
+
+mxShapeBasicDiagSnipRect.prototype.cst = {DIAG_SNIP_RECT : 'mxgraph.basic.diag_snip_rect'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicDiagSnipRect.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(dx, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w, h - dx);
+ c.lineTo(w - dx, h);
+ c.lineTo(0, h);
+ c.lineTo(0, dx);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT, mxShapeBasicDiagSnipRect);
+
+mxShapeBasicDiagSnipRect.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+
+//**********************************************************************************************************************************************************
+//Diagonal Round Rectangle
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicDiagRoundRect(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicDiagRoundRect, mxActor);
+
+mxShapeBasicDiagRoundRect.prototype.cst = {DIAG_ROUND_RECT : 'mxgraph.basic.diag_round_rect'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicDiagRoundRect.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(dx, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w, h - dx);
+ c.arcTo(dx, dx, 0, 0, 1, w - dx, h);
+ c.lineTo(0, h);
+ c.lineTo(0, dx);
+ c.arcTo(dx, dx, 0, 0, 1, dx, 0);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT, mxShapeBasicDiagRoundRect);
+
+mxShapeBasicDiagRoundRect.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Corner Round Rectangle
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicCornerRoundRect(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicCornerRoundRect, mxActor);
+
+mxShapeBasicCornerRoundRect.prototype.cst = {CORNER_ROUND_RECT : 'mxgraph.basic.corner_round_rect'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicCornerRoundRect.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(dx, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w, h);
+ c.lineTo(0, h);
+ c.lineTo(0, dx);
+ c.arcTo(dx, dx, 0, 0, 1, dx, 0);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT, mxShapeBasicCornerRoundRect);
+
+mxShapeBasicCornerRoundRect.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Plaque
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicPlaque(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicPlaque, mxActor);
+
+mxShapeBasicPlaque.prototype.cst = {PLAQUE : 'mxgraph.basic.plaque'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicPlaque.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(w - dx, 0);
+ c.arcTo(dx, dx, 0, 0, 0, w, dx);
+ c.lineTo(w, h - dx);
+ c.arcTo(dx, dx, 0, 0, 0, w - dx, h);
+ c.lineTo(dx, h);
+ c.arcTo(dx, dx, 0, 0, 0, 0, h - dx);
+ c.lineTo(0, dx);
+ c.arcTo(dx, dx, 0, 0, 0, dx, 0);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicPlaque.prototype.cst.PLAQUE, mxShapeBasicPlaque);
+
+mxShapeBasicPlaque.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicPlaque.prototype.cst.PLAQUE] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx * 1.41, bounds.y + dx * 1.41);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Frame
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicFrame(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicFrame, mxActor);
+
+mxShapeBasicFrame.prototype.cst = {FRAME : 'mxgraph.basic.frame'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicFrame.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(w, 0);
+ c.lineTo(w, h);
+ c.lineTo(0, h);
+ c.lineTo(0, 0);
+ c.close();
+ c.moveTo(dx, dx);
+ c.lineTo(dx, h - dx);
+ c.lineTo(w - dx, h - dx);
+ c.lineTo(w - dx, dx);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicFrame.prototype.cst.FRAME, mxShapeBasicFrame);
+
+mxShapeBasicFrame.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicFrame.prototype.cst.FRAME] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Plaque Frame
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicPlaqueFrame(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicPlaqueFrame, mxActor);
+
+mxShapeBasicPlaqueFrame.prototype.cst = {PLAQUE_FRAME : 'mxgraph.basic.plaque_frame'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicPlaqueFrame.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
+
+ dx = Math.min(w * 0.25, h * 0.25, dx);
+
+ c.begin();
+ c.moveTo(w - dx, 0);
+ c.arcTo(dx, dx, 0, 0, 0, w, dx);
+ c.lineTo(w, h - dx);
+ c.arcTo(dx, dx, 0, 0, 0, w - dx, h);
+ c.lineTo(dx, h);
+ c.arcTo(dx, dx, 0, 0, 0, 0, h - dx);
+ c.lineTo(0, dx);
+ c.arcTo(dx, dx, 0, 0, 0, dx, 0);
+ c.close();
+
+ c.moveTo(dx * 2, dx);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, dx, dx * 2);
+ c.lineTo(dx, h - 2 * dx);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, dx * 2, h - dx);
+ c.lineTo(w - 2 * dx, h - dx);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - dx, h - 2 * dx);
+ c.lineTo(w - dx, dx * 2);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - 2 * dx, dx);
+ c.close();
+
+ c.fillAndStroke();
+
+};
+
+mxCellRenderer.registerShape(mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME, mxShapeBasicPlaqueFrame);
+
+mxShapeBasicPlaqueFrame.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Rounded Frame
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicRoundedFrame(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicRoundedFrame, mxActor);
+
+mxShapeBasicRoundedFrame.prototype.cst = {ROUNDED_FRAME : 'mxgraph.basic.rounded_frame'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicRoundedFrame.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
+
+ dx = Math.min(w * 0.25, h * 0.25, dx);
+
+ c.begin();
+ c.moveTo(w - 2 * dx, 0);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, w, 2 * dx);
+ c.lineTo(w, h - 2 * dx);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - 2 * dx, h);
+ c.lineTo(dx * 2, h);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, 0, h - 2 * dx);
+ c.lineTo(0, 2 * dx);
+ c.arcTo(dx * 2, dx * 2, 0, 0, 1, 2 * dx, 0);
+ c.close();
+
+ c.moveTo(dx * 2, dx);
+ c.arcTo(dx, dx, 0, 0, 0, dx, dx * 2);
+ c.lineTo(dx, h - 2 * dx);
+ c.arcTo(dx, dx, 0, 0, 0, dx * 2, h - dx);
+ c.lineTo(w - 2 * dx, h - dx);
+ c.arcTo(dx, dx, 0, 0, 0, w - dx, h - 2 * dx);
+ c.lineTo(w - dx, dx * 2);
+ c.arcTo(dx, dx, 0, 0, 0, w - 2 * dx, dx);
+ c.close();
+
+ c.fillAndStroke();
+
+};
+
+mxCellRenderer.registerShape(mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME, mxShapeBasicRoundedFrame);
+
+mxShapeBasicRoundedFrame.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Frame Corner
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicFrameCorner(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicFrameCorner, mxActor);
+
+mxShapeBasicFrameCorner.prototype.cst = {FRAME_CORNER : 'mxgraph.basic.frame_corner'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicFrameCorner.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(0, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w - dx, dx);
+ c.lineTo(dx, dx);
+ c.lineTo(dx, h - dx);
+ c.lineTo(0, h);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER, mxShapeBasicFrameCorner);
+
+mxShapeBasicFrameCorner.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Diagonal Stripe
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicDiagStripe(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicDiagStripe, mxActor);
+
+mxShapeBasicDiagStripe.prototype.cst = {DIAG_STRIPE : 'mxgraph.basic.diag_stripe'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicDiagStripe.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx))));
+
+ dx = Math.min(w, h, dx);
+
+ c.begin();
+ c.moveTo(0, h);
+ c.lineTo(w, 0);
+ c.lineTo(w, Math.min(dx * 100 / w, h));
+ c.lineTo(Math.min(dx * 100 / h, w), h);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE, mxShapeBasicDiagStripe);
+
+mxShapeBasicDiagStripe.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + bounds.height);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Donut
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicDonut(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicDonut, mxActor);
+
+mxShapeBasicDonut.prototype.cst = {DONUT : 'mxgraph.basic.donut'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicDonut.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(0, h * 0.5);
+ c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0);
+ c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w, h * 0.5);
+ c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, h);
+ c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5);
+ c.close();
+ c.moveTo(w * 0.5, dx);
+ c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, dx, h * 0.5);
+ c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w * 0.5, h - dx);
+ c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w - dx, h * 0.5);
+ c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w * 0.5, dx);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicDonut.prototype.cst.DONUT, mxShapeBasicDonut);
+
+mxShapeBasicDonut.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicDonut.prototype.cst.DONUT] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + bounds.height / 2);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Layered Rect
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicLayeredRect(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicLayeredRect, mxActor);
+
+mxShapeBasicLayeredRect.prototype.cst = {LAYERED_RECT : 'mxgraph.basic.layered_rect'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicLayeredRect.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(dx, dx);
+ c.lineTo(w, dx);
+ c.lineTo(w, h);
+ c.lineTo(dx, h);
+ c.close();
+ c.fillAndStroke();
+
+ c.begin();
+ c.moveTo(dx * 0.5, dx * 0.5);
+ c.lineTo(w - dx * 0.5, dx * 0.5);
+ c.lineTo(w - dx * 0.5, h - dx * 0.5);
+ c.lineTo(dx * 0.5, h - dx * 0.5);
+ c.close();
+ c.fillAndStroke();
+
+ c.begin();
+ c.moveTo(0, 0);
+ c.lineTo(w - dx, 0);
+ c.lineTo(w - dx, h - dx);
+ c.lineTo(0, h - dx);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT, mxShapeBasicLayeredRect);
+
+mxShapeBasicLayeredRect.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, - pt.x + bounds.width + bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Button
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicButton(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicButton, mxActor);
+
+mxShapeBasicButton.prototype.cst = {BUTTON : 'mxgraph.basic.button'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicButton.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ 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);
+
+ c.begin();
+ c.moveTo(0, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w, h);
+ c.lineTo(0, h);
+ c.close();
+ c.fillAndStroke();
+
+ c.setShadow(false);
+ c.setLineJoin('round');
+
+ c.begin();
+ c.moveTo(0, h);
+ c.lineTo(0, 0);
+ c.lineTo(dx, dx);
+ c.lineTo(dx, h - dx);
+ c.close();
+ c.fillAndStroke();
+
+ c.begin();
+ c.moveTo(0, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w - dx, dx);
+ c.lineTo(dx, dx);
+ c.close();
+ c.fillAndStroke();
+
+ c.begin();
+ c.moveTo(w, 0);
+ c.lineTo(w, h);
+ c.lineTo(w - dx, h - dx);
+ c.lineTo(w - dx, dx);
+ c.close();
+ c.fillAndStroke();
+
+ c.begin();
+ c.moveTo(0, h);
+ c.lineTo(dx, h - dx);
+ c.lineTo(w - dx, h - dx);
+ c.lineTo(w, h);
+ c.close();
+ c.fillAndStroke();
+
+ c.begin();
+ c.moveTo(0, h);
+ c.lineTo(0, 0);
+ c.lineTo(dx, dx);
+ c.lineTo(dx, h - dx);
+ c.close();
+ c.fillAndStroke();
+
+
+};
+
+mxCellRenderer.registerShape(mxShapeBasicButton.prototype.cst.BUTTON, mxShapeBasicButton);
+
+mxShapeBasicButton.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicButton.prototype.cst.BUTTON] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Shaded Button
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicShadedButton(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.dx = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicShadedButton, mxActor);
+
+mxShapeBasicShadedButton.prototype.cst = {SHADED_BUTTON : 'mxgraph.basic.shaded_button'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicShadedButton.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ c.setShadow(false);
+
+ 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);
+
+ c.begin();
+ c.moveTo(0, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w, h);
+ c.lineTo(0, h);
+ c.close();
+ c.fill();
+
+ c.setFillColor('#ffffff');
+ c.setAlpha(0.25);
+ c.begin();
+ c.moveTo(0, h);
+ c.lineTo(0, 0);
+ c.lineTo(dx, dx);
+ c.lineTo(dx, h - dx);
+ c.close();
+ c.fill();
+
+ c.setAlpha(0.5);
+ c.begin();
+ c.moveTo(0, 0);
+ c.lineTo(w, 0);
+ c.lineTo(w - dx, dx);
+ c.lineTo(dx, dx);
+ c.close();
+ c.fill();
+
+ c.setFillColor('#000000');
+ c.setAlpha(0.25);
+ c.begin();
+ c.moveTo(w, 0);
+ c.lineTo(w, h);
+ c.lineTo(w - dx, h - dx);
+ c.lineTo(w - dx, dx);
+ c.close();
+ c.fill();
+
+ c.setAlpha(0.5);
+ c.begin();
+ c.moveTo(0, h);
+ c.lineTo(dx, h - dx);
+ c.lineTo(w - dx, h - dx);
+ c.lineTo(w, h);
+ c.close();
+ c.fill();
+
+
+};
+
+mxCellRenderer.registerShape(mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON, mxShapeBasicShadedButton);
+
+mxShapeBasicShadedButton.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['dx'], function(bounds)
+ {
+ var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx))));
+
+ return new mxPoint(bounds.x + dx, bounds.y + dx);
+ }, function(bounds, pt)
+ {
+ this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100;
+ })];
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Pie
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicPie(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.startAngle = 0.25;
+ this.endAngle = 0.75;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicPie, mxActor);
+
+mxShapeBasicPie.prototype.cst = {PIE : 'mxgraph.basic.pie'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicPie.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle))));
+ var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle))));
+ var rx = w * 0.5;
+ var ry = h * 0.5;
+
+ var startX = rx + Math.sin(startAngle) * rx;
+ var startY = ry - Math.cos(startAngle) * ry;
+ var endX = rx + Math.sin(endAngle) * rx;
+ var endY = ry - Math.cos(endAngle) * ry;
+
+ var angDiff = endAngle - startAngle;
+
+ if (angDiff < 0)
+ {
+ angDiff = angDiff + Math.PI * 2;
+ }
+
+ var bigArc = 0;
+
+ if (angDiff > Math.PI)
+ {
+ bigArc = 1;
+ }
+
+ c.begin();
+ c.moveTo(rx, ry);
+ c.lineTo(startX, startY);
+ c.arcTo(rx, ry, 0, bigArc, 1, endX, endY);
+ c.close();
+ c.fillAndStroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicPie.prototype.cst.PIE, mxShapeBasicPie);
+
+mxShapeBasicPie.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicPie.prototype.cst.PIE] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['startAngle'], function(bounds)
+ {
+ var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle))));
+
+ return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100;
+ var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100;
+
+ var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI;
+
+ if (res < 0)
+ {
+ res = 1 + res;
+ }
+
+ this.state.style['startAngle'] = res;
+
+ })];
+
+ var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds)
+ {
+ var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle))));
+
+ return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100;
+ var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100;
+
+ var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI;
+
+ if (res < 0)
+ {
+ res = 1 + res;
+ }
+
+ this.state.style['endAngle'] = res;
+ });
+
+ handles.push(handle2);
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Arc
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicArc(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.startAngle = 0.25;
+ this.endAngle = 0.75;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicArc, mxActor);
+
+mxShapeBasicArc.prototype.cst = {ARC : 'mxgraph.basic.arc'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicArc.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle))));
+ var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle))));
+ var rx = w * 0.5;
+ var ry = h * 0.5;
+
+ var startX = rx + Math.sin(startAngle) * rx;
+ var startY = ry - Math.cos(startAngle) * ry;
+ var endX = rx + Math.sin(endAngle) * rx;
+ var endY = ry - Math.cos(endAngle) * ry;
+
+ var angDiff = endAngle - startAngle;
+
+ if (angDiff < 0)
+ {
+ angDiff = angDiff + Math.PI * 2;
+ }
+
+ var bigArc = 0;
+
+ if (angDiff > Math.PI)
+ {
+ bigArc = 1;
+ }
+
+ c.begin();
+ c.moveTo(startX, startY);
+ c.arcTo(rx, ry, 0, bigArc, 1, endX, endY);
+ c.stroke();
+};
+
+mxCellRenderer.registerShape(mxShapeBasicArc.prototype.cst.ARC, mxShapeBasicArc);
+
+mxShapeBasicArc.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeBasicArc.prototype.cst.ARC] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['startAngle'], function(bounds)
+ {
+ var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle))));
+
+ return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100;
+ var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100;
+
+ var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI;
+
+ if (res < 0)
+ {
+ res = 1 + res;
+ }
+
+ this.state.style['startAngle'] = res;
+
+ })];
+
+ var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds)
+ {
+ var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle))));
+
+ return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100;
+ var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100;
+
+ var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI;
+
+ if (res < 0)
+ {
+ res = 1 + res;
+ }
+
+ this.state.style['endAngle'] = res;
+ });
+
+ handles.push(handle2);
+
+ return handles;
+};
+
+//**********************************************************************************************************************************************************
+//Partial Concentric Ellipse
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeBasicPartConcEllipse(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.startAngle = 0.25;
+ this.endAngle = 0.75;
+ this.arcWidth = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeBasicPartConcEllipse, mxActor);
+
+mxShapeBasicPartConcEllipse.prototype.cst = {PART_CONC_ELLIPSE : 'mxgraph.basic.partConcEllipse'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeBasicPartConcEllipse.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle))));
+ var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle))));
+ var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth))));
+ var rx = w * 0.5;
+ var ry = h * 0.5;
+ var rx2 = rx * arcWidth;
+ var ry2 = ry * arcWidth;
+
+ var startX = rx + Math.sin(startAngle) * rx;
+ var startY = ry - Math.cos(startAngle) * ry;
+ var innerStartX = rx + Math.sin(startAngle) * rx2;
+ var innerStartY = ry - Math.cos(startAngle) * ry2;
+ var endX = rx + Math.sin(endAngle) * rx;
+ var endY = ry - Math.cos(endAngle) * ry;
+ var innerEndX = rx + Math.sin(endAngle) * rx2;
+ var innerEndY = ry - Math.cos(endAngle) * ry2;
+
+ var angDiff = endAngle - startAngle;
+
+ if (angDiff < 0)
+ {
+ angDiff = angDiff + Math.PI * 2;
+ }
+
+ var bigArc = 0;
+
+ if (angDiff > Math.PI)
+ {
+ bigArc = 1;
+ }
+
+ c.begin();
+ c.moveTo(startX, startY);
+ c.arcTo(rx, ry, 0, bigArc, 1, endX, endY);
+ c.lineTo(innerEndX, innerEndY);
+ c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY);
+ c.close();
+ c.fillAndStroke();
+};
+
+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)
+ {
+ var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle))));
+
+ return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100;
+ var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100;
+
+ var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI;
+
+ if (res < 0)
+ {
+ res = 1 + res;
+ }
+
+ this.state.style['startAngle'] = res;
+
+ })];
+
+ var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds)
+ {
+ var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle))));
+
+ return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100;
+ var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100;
+
+ var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI;
+
+ if (res < 0)
+ {
+ res = 1 + res;
+ }
+
+ this.state.style['endAngle'] = res;
+ });
+
+ handles.push(handle2);
+
+ var handle3 = Graph.createHandle(state, ['arcWidth'], function(bounds)
+ {
+ var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth))));
+
+ return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5);
+ }, function(bounds, pt)
+ {
+ this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100;
+ });
+
+ handles.push(handle3);
+
+ return handles;
+};
+
diff --git a/src/main/webapp/shapes/mxFlowchart.js b/src/main/webapp/shapes/mxFlowchart.js
new file mode 100644
index 00000000..ab41ee67
--- /dev/null
+++ b/src/main/webapp/shapes/mxFlowchart.js
@@ -0,0 +1,74 @@
+/**
+ * $Id: mxFlowchart.js,v 1.5 2016/04/1 12:32:06 mate Exp $
+ * Copyright (c) 2006-2018, JGraph Ltd
+ */
+//**********************************************************************************************************************************************************
+// Document 2
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeFlowchartDocument2(bounds, fill, stroke, strokewidth)
+{
+ mxShape.call(this);
+ this.bounds = bounds;
+ this.fill = fill;
+ this.stroke = stroke;
+ this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+ this.size = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeFlowchartDocument2, mxActor);
+
+mxShapeFlowchartDocument2.prototype.cst = {DOCUMENT2 : 'mxgraph.flowchart.document2'};
+
+/**
+* Function: paintVertexShape
+*
+* Paints the vertex shape.
+*/
+mxShapeFlowchartDocument2.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+ c.translate(x, y);
+
+ var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
+ var fy = 1.4;
+ var r = 5;
+
+ c.begin();
+ c.moveTo(w - r, 0);
+ c.arcTo(r, r, 0, 0, 1, w, r);
+ c.lineTo(w, h - dy / 2);
+ c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2);
+ c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2);
+ c.lineTo(0, dy / 2);
+ c.lineTo(0, r);
+ c.arcTo(r, r, 0, 0, 1, r, 0);
+ c.close();
+ c.fillAndStroke();
+
+};
+
+mxCellRenderer.registerShape(mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2, mxShapeFlowchartDocument2);
+
+mxShapeFlowchartDocument2.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2] = function(state)
+{
+ var handles = [Graph.createHandle(state, ['size'], function(bounds)
+ {
+ var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size))));
+
+ return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height);
+
+ }, function(bounds, pt)
+ {
+ this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height));
+ })];
+
+ return handles;
+};
+