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:
authorGaudenz Alder <gaudenz@jgraph.com>2020-07-14 16:16:09 +0300
committerGaudenz Alder <gaudenz@jgraph.com>2020-07-14 16:16:09 +0300
commit650072534887bb4eb25c25292c93510b458cf2a9 (patch)
treea7167cd4295a4fbf05eb7ed28065faa81bc4a7e8
parent31fa89657931dc3495c91c68f1deda5a2b636352 (diff)
13.4.3 releasev13.4.3
-rw-r--r--ChangeLog4
-rw-r--r--VERSION2
-rw-r--r--src/main/webapp/electron.js253
-rw-r--r--src/main/webapp/export3.html26
-rw-r--r--src/main/webapp/js/app.min.js947
-rw-r--r--src/main/webapp/js/diagramly/App.js4
-rw-r--r--src/main/webapp/js/diagramly/Dialogs.js4
-rw-r--r--src/main/webapp/js/diagramly/DrawioFile.js22
-rw-r--r--src/main/webapp/js/diagramly/DrawioFileSync.js2
-rw-r--r--src/main/webapp/js/diagramly/DriveFile.js44
-rw-r--r--src/main/webapp/js/diagramly/Editor.js5
-rw-r--r--src/main/webapp/js/diagramly/EditorUi.js13
-rw-r--r--src/main/webapp/js/diagramly/Extensions.js6
-rw-r--r--src/main/webapp/js/diagramly/GitHubFile.js13
-rw-r--r--src/main/webapp/js/diagramly/GitLabFile.js13
-rw-r--r--src/main/webapp/js/diagramly/Menus.js15
-rw-r--r--src/main/webapp/js/diagramly/OneDriveFile.js62
-rw-r--r--src/main/webapp/js/diagramly/sidebar/Sidebar-MSCAE.js2
-rw-r--r--src/main/webapp/js/extensions.min.js491
-rw-r--r--src/main/webapp/js/mxgraph/EditorUi.js101
-rw-r--r--src/main/webapp/js/mxgraph/Format.js14
-rw-r--r--src/main/webapp/js/mxgraph/Graph.js184
-rw-r--r--src/main/webapp/js/mxgraph/Shapes.js14
-rw-r--r--src/main/webapp/js/mxgraph/Sidebar.js2
-rw-r--r--src/main/webapp/js/viewer-static.min.js724
-rw-r--r--src/main/webapp/js/viewer.min.js724
-rw-r--r--src/main/webapp/resources/dia.txt1
-rw-r--r--src/main/webapp/resources/dia_am.txt1
-rw-r--r--src/main/webapp/resources/dia_ar.txt1
-rw-r--r--src/main/webapp/resources/dia_bg.txt1
-rw-r--r--src/main/webapp/resources/dia_bn.txt1
-rw-r--r--src/main/webapp/resources/dia_bs.txt1
-rw-r--r--src/main/webapp/resources/dia_ca.txt1
-rw-r--r--src/main/webapp/resources/dia_cs.txt1
-rw-r--r--src/main/webapp/resources/dia_da.txt1
-rw-r--r--src/main/webapp/resources/dia_de.txt1
-rw-r--r--src/main/webapp/resources/dia_el.txt1
-rw-r--r--src/main/webapp/resources/dia_eo.txt1
-rw-r--r--src/main/webapp/resources/dia_es.txt1
-rw-r--r--src/main/webapp/resources/dia_et.txt1
-rw-r--r--src/main/webapp/resources/dia_eu.txt1
-rw-r--r--src/main/webapp/resources/dia_fa.txt1
-rw-r--r--src/main/webapp/resources/dia_fi.txt1
-rw-r--r--src/main/webapp/resources/dia_fil.txt1
-rw-r--r--src/main/webapp/resources/dia_fr.txt1
-rw-r--r--src/main/webapp/resources/dia_gl.txt1
-rw-r--r--src/main/webapp/resources/dia_gu.txt1
-rw-r--r--src/main/webapp/resources/dia_he.txt1
-rw-r--r--src/main/webapp/resources/dia_hi.txt1
-rw-r--r--src/main/webapp/resources/dia_hr.txt1
-rw-r--r--src/main/webapp/resources/dia_hu.txt1
-rw-r--r--src/main/webapp/resources/dia_i18n.txt1
-rw-r--r--src/main/webapp/resources/dia_id.txt1
-rw-r--r--src/main/webapp/resources/dia_it.txt1
-rw-r--r--src/main/webapp/resources/dia_ja.txt1
-rw-r--r--src/main/webapp/resources/dia_kn.txt1
-rw-r--r--src/main/webapp/resources/dia_ko.txt1
-rw-r--r--src/main/webapp/resources/dia_lt.txt1
-rw-r--r--src/main/webapp/resources/dia_lv.txt1
-rw-r--r--src/main/webapp/resources/dia_ml.txt1
-rw-r--r--src/main/webapp/resources/dia_mr.txt1
-rw-r--r--src/main/webapp/resources/dia_ms.txt1
-rw-r--r--src/main/webapp/resources/dia_my.txt1
-rw-r--r--src/main/webapp/resources/dia_nl.txt1
-rw-r--r--src/main/webapp/resources/dia_no.txt1
-rw-r--r--src/main/webapp/resources/dia_pl.txt1
-rw-r--r--src/main/webapp/resources/dia_pt-br.txt1
-rw-r--r--src/main/webapp/resources/dia_pt.txt1
-rw-r--r--src/main/webapp/resources/dia_ro.txt1
-rw-r--r--src/main/webapp/resources/dia_ru.txt1
-rw-r--r--src/main/webapp/resources/dia_si.txt1
-rw-r--r--src/main/webapp/resources/dia_sk.txt1
-rw-r--r--src/main/webapp/resources/dia_sl.txt1
-rw-r--r--src/main/webapp/resources/dia_sr.txt1
-rw-r--r--src/main/webapp/resources/dia_sv.txt1
-rw-r--r--src/main/webapp/resources/dia_sw.txt1
-rw-r--r--src/main/webapp/resources/dia_ta.txt1
-rw-r--r--src/main/webapp/resources/dia_te.txt1
-rw-r--r--src/main/webapp/resources/dia_th.txt1
-rw-r--r--src/main/webapp/resources/dia_tr.txt1
-rw-r--r--src/main/webapp/resources/dia_uk.txt1
-rw-r--r--src/main/webapp/resources/dia_vi.txt1
-rw-r--r--src/main/webapp/resources/dia_zh-tw.txt1
-rw-r--r--src/main/webapp/resources/dia_zh.txt1
-rw-r--r--src/main/webapp/service-worker.js120
-rw-r--r--src/main/webapp/styles/grapheditor.css16
-rw-r--r--src/main/webapp/vsdxImporter.html32
87 files changed, 2127 insertions, 1790 deletions
diff --git a/ChangeLog b/ChangeLog
index 7cecc6f1..aeea40bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+14-JUL-2020: 13.4.3
+
+- Adds shape selection on blue arrow click
+
10-JUL-2020: 13.4.2
- Adds shape selection on double click
diff --git a/VERSION b/VERSION
index 30bd1e1d..7dfdf979 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-13.4.2 \ No newline at end of file
+13.4.3 \ No newline at end of file
diff --git a/src/main/webapp/electron.js b/src/main/webapp/electron.js
index 09502ce6..6924602a 100644
--- a/src/main/webapp/electron.js
+++ b/src/main/webapp/electron.js
@@ -188,7 +188,7 @@ app.on('ready', e =>
argv.unshift(null)
}
- var validFormatRegExp = /^(pdf|svg|png|jpeg|jpg|vsdx)$/;
+ var validFormatRegExp = /^(pdf|svg|png|jpeg|jpg|vsdx|xml)$/;
function argsRange(val)
{
@@ -207,7 +207,7 @@ app.on('ready', e =>
.option('-r, --recursive', 'for a folder input, recursively convert all files in sub-folders also')
.option('-o, --output <output file/folder>', 'specify the output file/folder. If omitted, the input file name is used for output with the specified format as extension')
.option('-f, --format <format>',
- 'if output file name extension is specified, this option is ignored (file type is determined from output extension, possible export formats are pdf, png, jpg, svg, vsdx)',
+ 'if output file name extension is specified, this option is ignored (file type is determined from output extension, possible export formats are pdf, png, jpg, svg, vsdx, and xml)',
validFormatRegExp, 'pdf')
.option('-q, --quality <quality>',
'output image quality for JPEG (default: 90)', parseInt)
@@ -231,6 +231,8 @@ app.on('ready', e =>
'selects a specific page, if not specified and the format is an image, the first page is selected', parseInt)
.option('-g, --page-range <from>..<to>',
'selects a page range (for PDF format only)', argsRange)
+ .option('-u, --uncompressed',
+ 'Uncompressed XML output (for XML format only)')
.parse(argv)
}
catch(e)
@@ -243,7 +245,10 @@ app.on('ready', e =>
if (program.export)
{
var dummyWin = new BrowserWindow({
- show : false
+ show : false,
+ webPreferences: {
+ nodeIntegration: true
+ }
});
windowsRegistry.push(dummyWin);
@@ -299,7 +304,7 @@ app.on('ready', e =>
from = program.pageRage[0] >= 0 ? program.pageRage[0] : null;
to = program.pageRage[1] >= 0 ? program.pageRage[1] : null;
}
-
+
var expArgs = {
format: format,
w: program.width > 0 ? program.width : null,
@@ -311,7 +316,8 @@ app.on('ready', e =>
allPages: format == 'pdf' && program.allPages,
scale: (program.crop && program.scale == null) ? 1.00001: (program.scale || 1), //any value other than 1 crops the pdf
embedXml: program.embedDiagram? '1' : '0',
- jpegQuality: program.quality
+ jpegQuality: program.quality,
+ uncompressed: program.uncompressed
};
var paths = program.args;
@@ -371,113 +377,138 @@ app.on('ready', e =>
{
var ext = path.extname(curFile);
- expArgs.xml = fs.readFileSync(curFile, ext === '.png'? null : 'utf-8');
+ expArgs.xml = fs.readFileSync(curFile, ext === '.png' || ext === '.vsdx' ? null : 'utf-8');
if (ext === '.png')
{
expArgs.xml = Buffer.from(expArgs.xml).toString('base64');
+ startExport();
+ }
+ else if (ext === '.vsdx')
+ {
+ dummyWin.loadURL(`file://${__dirname}/vsdxImporter.html`);
+
+ const contents = dummyWin.webContents;
+
+ contents.on('did-finish-load', function()
+ {
+ contents.send('import', expArgs.xml);
+
+ ipcMain.once('import-success', function(evt, xml)
+ {
+ expArgs.xml = xml;
+ startExport();
+ });
+
+ ipcMain.once('import-error', function()
+ {
+ console.error('Error: cannot import VSDX file: ' + curFile);
+ next();
+ });
+ });
+ }
+ else
+ {
+ startExport();
}
- var mockEvent = {
- reply: function(msg, data)
+ function next()
+ {
+ fileIndex++;
+
+ if (fileIndex < files.length)
+ {
+ processOneFile();
+ }
+ else
{
- try
+ cmdQPressed = true;
+ dummyWin.destroy();
+ }
+ };
+
+ function startExport()
+ {
+ var mockEvent = {
+ reply: function(msg, data)
{
- if (data == null || data.length == 0)
- {
- console.error('Error: Export failed: ' + curFile);
- }
- else if (msg == 'export-success')
+ try
{
- var outFileName = null;
-
- if (outType != null)
+ if (data == null || data.length == 0)
+ {
+ console.error('Error: Export failed: ' + curFile);
+ }
+ else if (msg == 'export-success')
{
- if (outType.isDir)
+ var outFileName = null;
+
+ if (outType != null)
{
- outFileName = path.join(program.output, path.basename(curFile)) + '.' + format;
+ if (outType.isDir)
+ {
+ outFileName = path.join(program.output, path.basename(curFile)) + '.' + format;
+ }
+ else
+ {
+ outFileName = program.output;
+ }
}
- else
+ else if (inStat.isFile())
{
- outFileName = program.output;
+ outFileName = path.join(path.dirname(paths[0]), path.basename(paths[0],
+ path.extname(paths[0]))) + '.' + format;
+
+ }
+ else //dir
+ {
+ outFileName = path.join(path.dirname(curFile), path.basename(curFile,
+ path.extname(curFile))) + '.' + format;
}
- }
- else if (inStat.isFile())
- {
- outFileName = path.join(path.dirname(paths[0]), path.basename(paths[0],
- path.extname(paths[0]))) + '.' + format;
-
- }
- else //dir
- {
- outFileName = path.join(path.dirname(curFile), path.basename(curFile,
- path.extname(curFile))) + '.' + format;
- }
-
- try
- {
- var counter = 0;
- var realFileName = outFileName;
- if (program.rawArgs.indexOf('-k') > -1 || program.rawArgs.indexOf('--check') > -1)
+ try
{
- while (fs.existsSync(realFileName))
+ var counter = 0;
+ var realFileName = outFileName;
+
+ if (program.rawArgs.indexOf('-k') > -1 || program.rawArgs.indexOf('--check') > -1)
{
- counter++;
- realFileName = path.join(path.dirname(outFileName), path.basename(outFileName,
- path.extname(outFileName))) + '-' + counter + path.extname(outFileName);
+ while (fs.existsSync(realFileName))
+ {
+ counter++;
+ realFileName = path.join(path.dirname(outFileName), path.basename(outFileName,
+ path.extname(outFileName))) + '-' + counter + path.extname(outFileName);
+ }
}
+
+ fs.writeFileSync(realFileName, data, format == 'vsdx'? 'base64' : null, { flag: 'wx' });
+ console.log(curFile + ' -> ' + outFileName);
+ }
+ catch(e)
+ {
+ console.error('Error writing to file: ' + outFileName);
}
-
- fs.writeFileSync(realFileName, data, format == 'vsdx'? 'base64' : null, { flag: 'wx' });
- console.log(curFile + ' -> ' + outFileName);
}
- catch(e)
+ else
{
- console.error('Error writing to file: ' + outFileName);
+ console.error('Error: ' + data + ': ' + curFile);
}
+
+ next();
}
- else
- {
- console.error('Error: ' + data + ': ' + curFile);
- }
-
- fileIndex++;
-
- if (fileIndex < files.length)
- {
- processOneFile();
- }
- else
+ finally
{
- cmdQPressed = true;
- dummyWin.destroy();
+ mockEvent.finalize();
}
- }
- finally
- {
- mockEvent.finalize();
- }
- }
+ }
+ };
+
+ exportDiagram(mockEvent, expArgs, true);
};
-
- exportDiagram(mockEvent, expArgs, true);
}
catch(e)
{
console.error('Error reading file: ' + curFile);
-
- fileIndex++;
-
- if (fileIndex < files.length)
- {
- processOneFile();
- }
- else
- {
- cmdQPressed = true;
- dummyWin.destroy();
- }
+ next();
}
}
@@ -1092,10 +1123,34 @@ function exportDiagram(event, args, directFinalize)
contents.on('did-finish-load', function()
{
+ //Set finalize here since it is call in the reply below
+ function finalize()
+ {
+ browser.destroy();
+ };
+
+ if (directFinalize === true)
+ {
+ event.finalize = finalize;
+ }
+ else
+ {
+ //Destroy the window after response being received by caller
+ ipcMain.once('export-finalize', finalize);
+ }
+
ipcMain.once('render-finished', (evt, bounds) =>
{
//For some reason, Electron 9 doesn't send this object as is without stringifying. Usually when variable is external to function own scope
- bounds = JSON.parse(bounds.bounds);
+ try
+ {
+ bounds = JSON.parse(bounds.bounds);
+ }
+ catch(e)
+ {
+ bounds = null;
+ }
+
var pdfOptions = {pageSize: 'A4'};
var hasError = false;
@@ -1127,22 +1182,6 @@ function exportDiagram(event, args, directFinalize)
var base64encoded = args.base64 == '1';
- //Set finalize here since it is call in the reply below
- function finalize()
- {
- browser.destroy();
- };
-
- if (directFinalize === true)
- {
- event.finalize = finalize;
- }
- else
- {
- //Destroy the window after response being received by caller
- ipcMain.once('export-finalize', finalize);
- }
-
if (hasError)
{
event.reply('export-error');
@@ -1212,6 +1251,19 @@ function exportDiagram(event, args, directFinalize)
}
});
+ if (args.format == 'xml')
+ {
+ ipcMain.once('xml-data', (evt, data) =>
+ {
+ event.reply('export-success', data);
+ });
+
+ ipcMain.once('xml-data-error', () =>
+ {
+ event.reply('export-error');
+ });
+ }
+
contents.send('render', {
xml: args.xml,
format: args.format,
@@ -1224,7 +1276,8 @@ function exportDiagram(event, args, directFinalize)
pageId: args.pageId,
allPages: args.allPages,
scale: args.scale || 1,
- extras: args.extras
+ extras: args.extras,
+ uncompressed: args.uncompressed
});
});
}
diff --git a/src/main/webapp/export3.html b/src/main/webapp/export3.html
index b0ef749a..5185b52c 100644
--- a/src/main/webapp/export3.html
+++ b/src/main/webapp/export3.html
@@ -108,7 +108,31 @@
var xmlDoc = node.ownerDocument;
var diagrams = null;
var from = 0;
-
+
+ if (mxIsElectron && data.format == 'xml')
+ {
+ const { ipcRenderer } = require('electron');
+
+ try
+ {
+ var xml = mxUtils.getXml(xmlDoc);
+ EditorUi.prototype.createUi = function(){};
+ EditorUi.prototype.addTrees = function(){};
+ EditorUi.prototype.updateActionStates = function(){};
+ var editorUi = new EditorUi();
+ var tmpFile = new LocalFile(editorUi, xml);
+ editorUi.setCurrentFile(tmpFile);
+ editorUi.setFileData(xml);
+ ipcRenderer.send('xml-data', mxUtils.getXml(editorUi.getXmlFileData(null, null, data.uncompressed)));
+ }
+ catch(e)
+ {
+ ipcRenderer.send('xml-data-error');
+ }
+
+ return;
+ }
+
// Handles mxfile
if (xmlDoc.documentElement.nodeName == 'mxfile')
{
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 6a8aae5b..723dfb0c 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -2184,11 +2184,11 @@ Editor.prototype.setFilename=function(a){this.filename=a};
Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,d){c.undoableEditHappened(d.getProperty("edit"))};var d=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,d);a.getView().addListener(mxEvent.UNDO,d);d=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes,function(a){return!(a instanceof mxChildChange)});if(0<d.length){a.getModel();for(var f=[],g=0;g<
d.length;g++)null!=a.view.getState(d[g])&&f.push(d[g]);a.setSelectionCells(f)}};c.addListener(mxEvent.UNDO,d);c.addListener(mxEvent.REDO,d);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)};
-function Dialog(a,c,d,b,f,e,h,g,k,l,n){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,u=b,q=mxUtils.getDocumentSize();null!=window.innerHeight&&(q.height=window.innerHeight);var v=q.height,r=Math.max(1,Math.round((q.width-d-64)/2)),w=Math.max(1,Math.round((v-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,v-64);0<a.dialogs.length&&(this.zIndex+=
-2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=v+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));q=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=q.x+"px";this.bg.style.top=q.y+"px";r+=q.x;w+=q.y;f&&document.body.appendChild(this.bg);var t=a.createDiv(k?"geTransDialog":
-"geDialog");f=this.getPosition(r,w,d,b);r=f.x;w=f.y;t.style.width=d+"px";t.style.height=b+"px";t.style.left=r+"px";t.style.top=w+"px";t.style.zIndex=this.zIndex;t.appendChild(c);document.body.appendChild(t);!g&&c.clientHeight>t.clientHeight-64&&(c.style.overflowY="auto");if(e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=w+14+"px",e.style.left=r+d+38-m+"px",e.style.zIndex=
-this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!n)){var x=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){x=!0}),null,mxUtils.bind(this,function(b){x&&(a.hideDialog(!0),x=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,u=b=e.h)}e=mxUtils.getDocumentSize();v=e.height;this.bg.style.height=v+"px";r=Math.max(1,Math.round((e.width-d-64)/2));w=Math.max(1,
-Math.round((v-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(u,v-64);e=this.getPosition(r,w,d,b);r=e.x;w=e.y;t.style.left=r+"px";t.style.top=w+"px";t.style.width=d+"px";t.style.height=b+"px";!g&&c.clientHeight>t.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=w+14+"px",this.dialogImg.style.left=r+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=
+function Dialog(a,c,d,b,f,e,h,g,k,l,n){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,u=b,r=mxUtils.getDocumentSize();null!=window.innerHeight&&(r.height=window.innerHeight);var v=r.height,q=Math.max(1,Math.round((r.width-d-64)/2)),w=Math.max(1,Math.round((v-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,v-64);0<a.dialogs.length&&(this.zIndex+=
+2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=v+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));r=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=r.x+"px";this.bg.style.top=r.y+"px";q+=r.x;w+=r.y;f&&document.body.appendChild(this.bg);var t=a.createDiv(k?"geTransDialog":
+"geDialog");f=this.getPosition(q,w,d,b);q=f.x;w=f.y;t.style.width=d+"px";t.style.height=b+"px";t.style.left=q+"px";t.style.top=w+"px";t.style.zIndex=this.zIndex;t.appendChild(c);document.body.appendChild(t);!g&&c.clientHeight>t.clientHeight-64&&(c.style.overflowY="auto");if(e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=w+14+"px",e.style.left=q+d+38-m+"px",e.style.zIndex=
+this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!n)){var y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){y=!0}),null,mxUtils.bind(this,function(b){y&&(a.hideDialog(!0),y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,u=b=e.h)}e=mxUtils.getDocumentSize();v=e.height;this.bg.style.height=v+"px";q=Math.max(1,Math.round((e.width-d-64)/2));w=Math.max(1,
+Math.round((v-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(u,v-64);e=this.getPosition(q,w,d,b);q=e.x;w=e.y;t.style.left=q+"px";t.style.top=w+"px";t.style.width=d+"px";t.style.height=b+"px";!g&&c.clientHeight>t.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=w+14+"px",this.dialogImg.style.left=q+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=
t;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
@@ -2215,25 +2215,25 @@ e,h=document.createElement("table");h.style.width="100%";h.style.height="100%";v
e=document.createElement("td");mxUtils.write(e,mxResources.get("background")+":");f.appendChild(e);e=document.createElement("td");e.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="18px";l.style.height="18px";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";var n=b.background;c();mxEvent.addListener(l,"click",function(b){a.pickColor(n||"none",function(a){n=
a;c()});mxEvent.consume(b)});e.appendChild(l);mxUtils.write(e,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=b.getGridSize();e.appendChild(m);mxEvent.addListener(m,"change",function(){var a=parseInt(m.value);m.value=Math.max(1,isNaN(a)?b.getGridSize():a)});f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");mxUtils.write(e,
mxResources.get("image")+":");f.appendChild(e);e=document.createElement("td");var p=document.createElement("a");p.style.textDecoration="underline";p.style.cursor="pointer";p.style.color="#a0a0a0";var u=b.backgroundImage;mxEvent.addListener(p,"click",function(b){a.showBackgroundImageDialog(function(a,b){b||(u=a,d())},u);mxEvent.consume(b)});d();e.appendChild(p);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align",
-"right");var q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&e.appendChild(q);var v=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var c=parseInt(m.value);isNaN(c)||b.gridSize===c||b.setGridSize(c);c=new ChangePageSetup(a,n,u,k.get());c.ignoreColor=b.background==n;c.ignoreImage=(null!=b.backgroundImage?b.backgroundImage.src:null)===(null!=u?u.src:null);b.pageFormat.width==c.previousFormat.width&&b.pageFormat.height==
-c.previousFormat.height&&c.ignoreColor&&c.ignoreImage||b.model.execute(c)});v.className="geBtn gePrimaryBtn";e.appendChild(v);a.editor.cancelFirst||e.appendChild(q);f.appendChild(e);g.appendChild(f);h.appendChild(g);this.container=h};
-PageSetupDialog.addPageFormatPanel=function(a,c,d,b){function f(a,b,c){if(c||m!=document.activeElement&&p!=document.activeElement){a=!1;for(b=0;b<q.length;b++)c=q[b],t?"custom"==c.key&&(g.value=c.key,t=!1):null!=c.format&&("a4"==c.key?826==d.width?(d=mxRectangle.fromRectangle(d),d.width=827):826==d.height&&(d=mxRectangle.fromRectangle(d),d.height=827):"a5"==c.key&&(584==d.width?(d=mxRectangle.fromRectangle(d),d.width=583):584==d.height&&(d=mxRectangle.fromRectangle(d),d.height=583)),d.width==c.format.width&&
+"right");var r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});r.className="geBtn";a.editor.cancelFirst&&e.appendChild(r);var v=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var c=parseInt(m.value);isNaN(c)||b.gridSize===c||b.setGridSize(c);c=new ChangePageSetup(a,n,u,k.get());c.ignoreColor=b.background==n;c.ignoreImage=(null!=b.backgroundImage?b.backgroundImage.src:null)===(null!=u?u.src:null);b.pageFormat.width==c.previousFormat.width&&b.pageFormat.height==
+c.previousFormat.height&&c.ignoreColor&&c.ignoreImage||b.model.execute(c)});v.className="geBtn gePrimaryBtn";e.appendChild(v);a.editor.cancelFirst||e.appendChild(r);f.appendChild(e);g.appendChild(f);h.appendChild(g);this.container=h};
+PageSetupDialog.addPageFormatPanel=function(a,c,d,b){function f(a,b,c){if(c||m!=document.activeElement&&p!=document.activeElement){a=!1;for(b=0;b<r.length;b++)c=r[b],t?"custom"==c.key&&(g.value=c.key,t=!1):null!=c.format&&("a4"==c.key?826==d.width?(d=mxRectangle.fromRectangle(d),d.width=827):826==d.height&&(d=mxRectangle.fromRectangle(d),d.height=827):"a5"==c.key&&(584==d.width?(d=mxRectangle.fromRectangle(d),d.width=583):584==d.height&&(d=mxRectangle.fromRectangle(d),d.height=583)),d.width==c.format.width&&
d.height==c.format.height?(g.value=c.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,h.removeAttribute("checked"),h.defaultChecked=!1,h.checked=!1,a=!0):d.width==c.format.height&&d.height==c.format.width&&(g.value=c.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,h.setAttribute("checked","checked"),h.defaultChecked=!0,a=h.checked=!0));a?(k.style.display="",n.style.display="none"):(m.value=d.width/100,p.value=d.height/100,e.setAttribute("checked","checked"),
g.value="custom",k.style.display="none",n.style.display="")}}c="format-"+c;var e=document.createElement("input");e.setAttribute("name",c);e.setAttribute("type","radio");e.setAttribute("value","portrait");var h=document.createElement("input");h.setAttribute("name",c);h.setAttribute("type","radio");h.setAttribute("value","landscape");var g=document.createElement("select");g.style.marginBottom="8px";g.style.width="202px";var k=document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";
k.style.height="24px";e.style.marginRight="6px";k.appendChild(e);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);h.style.marginLeft="10px";h.style.marginRight="6px";k.appendChild(h);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));k.appendChild(l);var n=document.createElement("div");n.style.marginLeft="4px";n.style.width="210px";n.style.height="24px";var m=document.createElement("input");
-m.setAttribute("size","7");m.style.textAlign="right";n.appendChild(m);mxUtils.write(n," in x ");var p=document.createElement("input");p.setAttribute("size","7");p.style.textAlign="right";n.appendChild(p);mxUtils.write(n," in");k.style.display="none";n.style.display="none";for(var u={},q=PageSetupDialog.getFormats(),v=0;v<q.length;v++){var r=q[v];u[r.key]=r;var w=document.createElement("option");w.setAttribute("value",r.key);mxUtils.write(w,r.title);g.appendChild(w)}var t=!1;f();a.appendChild(g);mxUtils.br(a);
-a.appendChild(k);a.appendChild(n);var x=d,y=function(a,c){var e=u[g.value];null!=e.format?(m.value=e.format.width/100,p.value=e.format.height/100,n.style.display="none",k.style.display=""):(k.style.display="none",n.style.display="");e=parseFloat(m.value);if(isNaN(e)||0>=e)m.value=d.width/100;e=parseFloat(p.value);if(isNaN(e)||0>=e)p.value=d.height/100;e=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),Math.floor(100*parseFloat(p.value)));"custom"!=g.value&&h.checked&&(e=new mxRectangle(0,0,
-e.height,e.width));c&&t||e.width==x.width&&e.height==x.height||(x=e,null!=b&&b(x))};mxEvent.addListener(c,"click",function(a){e.checked=!0;y(a);mxEvent.consume(a)});mxEvent.addListener(l,"click",function(a){h.checked=!0;y(a);mxEvent.consume(a)});mxEvent.addListener(m,"blur",y);mxEvent.addListener(m,"click",y);mxEvent.addListener(p,"blur",y);mxEvent.addListener(p,"click",y);mxEvent.addListener(h,"change",y);mxEvent.addListener(e,"change",y);mxEvent.addListener(g,"change",function(a){t="custom"==g.value;
-y(a,!0)});y();return{set:function(a){d=a;f(null,null,!0)},get:function(){return x},widthInput:m,heightInput:p}};
+m.setAttribute("size","7");m.style.textAlign="right";n.appendChild(m);mxUtils.write(n," in x ");var p=document.createElement("input");p.setAttribute("size","7");p.style.textAlign="right";n.appendChild(p);mxUtils.write(n," in");k.style.display="none";n.style.display="none";for(var u={},r=PageSetupDialog.getFormats(),v=0;v<r.length;v++){var q=r[v];u[q.key]=q;var w=document.createElement("option");w.setAttribute("value",q.key);mxUtils.write(w,q.title);g.appendChild(w)}var t=!1;f();a.appendChild(g);mxUtils.br(a);
+a.appendChild(k);a.appendChild(n);var y=d,x=function(a,c){var e=u[g.value];null!=e.format?(m.value=e.format.width/100,p.value=e.format.height/100,n.style.display="none",k.style.display=""):(k.style.display="none",n.style.display="");e=parseFloat(m.value);if(isNaN(e)||0>=e)m.value=d.width/100;e=parseFloat(p.value);if(isNaN(e)||0>=e)p.value=d.height/100;e=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),Math.floor(100*parseFloat(p.value)));"custom"!=g.value&&h.checked&&(e=new mxRectangle(0,0,
+e.height,e.width));c&&t||e.width==y.width&&e.height==y.height||(y=e,null!=b&&b(y))};mxEvent.addListener(c,"click",function(a){e.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(l,"click",function(a){h.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(m,"blur",x);mxEvent.addListener(m,"click",x);mxEvent.addListener(p,"blur",x);mxEvent.addListener(p,"click",x);mxEvent.addListener(h,"change",x);mxEvent.addListener(e,"change",x);mxEvent.addListener(g,"change",function(a){t="custom"==g.value;
+x(a,!0)});x();return{set:function(a){d=a;f(null,null,!0)},get:function(){return y},widthInput:m,heightInput:p}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,1600,900)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1920,1200)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1600,1200)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(a,c,d,b,f,e,h,g,k,l,n,m){k=null!=k?k:!0;var p,u,q=document.createElement("table"),v=document.createElement("tbody");q.style.marginTop="8px";p=document.createElement("tr");u=document.createElement("td");u.style.whiteSpace="nowrap";u.style.fontSize="10pt";u.style.width=n?"80px":"120px";mxUtils.write(u,(f||mxResources.get("filename"))+":");p.appendChild(u);var r=document.createElement("input");r.setAttribute("value",c||"");r.style.marginLeft="4px";r.style.width=null!=m?m+
-"px":"180px";var w=mxUtils.button(d,function(){if(null==e||e(r.value))k&&a.hideDialog(),b(r.value)});w.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(r.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?r.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=q.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});
-mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=r,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(r.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),w.click());a.stopPropagation();a.preventDefault()}))}}};u=document.createElement("td");
-u.style.whiteSpace="nowrap";u.appendChild(r);p.appendChild(u);if(null!=f||null==h)v.appendChild(p),null!=n&&(null!=a.editor.diagramFileTypes&&(p=FilenameDialog.createFileTypes(a,r,a.editor.diagramFileTypes),p.style.marginLeft="6px",p.style.width="74px",u.appendChild(p),r.style.width=null!=m?m-40+"px":"140px"),u.appendChild(FilenameDialog.createTypeHint(a,r,n)));null!=h&&(p=document.createElement("tr"),u=document.createElement("td"),u.colSpan=2,u.appendChild(h),p.appendChild(u),v.appendChild(p));p=
-document.createElement("tr");u=document.createElement("td");u.colSpan=2;u.style.paddingTop="20px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});n.className="geBtn";a.editor.cancelFirst&&u.appendChild(n);null!=g&&(m=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),m.className="geBtn",u.appendChild(m));mxEvent.addListener(r,"keypress",function(a){13==a.keyCode&&w.click()});
-u.appendChild(w);a.editor.cancelFirst||u.appendChild(n);p.appendChild(u);v.appendChild(p);q.appendChild(v);this.container=q};FilenameDialog.filenameHelpLink=null;
+var FilenameDialog=function(a,c,d,b,f,e,h,g,k,l,n,m){k=null!=k?k:!0;var p,u,r=document.createElement("table"),v=document.createElement("tbody");r.style.marginTop="8px";p=document.createElement("tr");u=document.createElement("td");u.style.whiteSpace="nowrap";u.style.fontSize="10pt";u.style.width=n?"80px":"120px";mxUtils.write(u,(f||mxResources.get("filename"))+":");p.appendChild(u);var q=document.createElement("input");q.setAttribute("value",c||"");q.style.marginLeft="4px";q.style.width=null!=m?m+
+"px":"180px";var w=mxUtils.button(d,function(){if(null==e||e(q.value))k&&a.hideDialog(),b(q.value)});w.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=r.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});
+mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),w.click());a.stopPropagation();a.preventDefault()}))}}};u=document.createElement("td");
+u.style.whiteSpace="nowrap";u.appendChild(q);p.appendChild(u);if(null!=f||null==h)v.appendChild(p),null!=n&&(null!=a.editor.diagramFileTypes&&(p=FilenameDialog.createFileTypes(a,q,a.editor.diagramFileTypes),p.style.marginLeft="6px",p.style.width="74px",u.appendChild(p),q.style.width=null!=m?m-40+"px":"140px"),u.appendChild(FilenameDialog.createTypeHint(a,q,n)));null!=h&&(p=document.createElement("tr"),u=document.createElement("td"),u.colSpan=2,u.appendChild(h),p.appendChild(u),v.appendChild(p));p=
+document.createElement("tr");u=document.createElement("td");u.colSpan=2;u.style.paddingTop="20px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});n.className="geBtn";a.editor.cancelFirst&&u.appendChild(n);null!=g&&(m=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),m.className="geBtn",u.appendChild(m));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&w.click()});
+u.appendChild(w);a.editor.cancelFirst||u.appendChild(n);p.appendChild(u);v.appendChild(p);r.appendChild(v);this.container=r};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,c,d){var b=document.createElement("img");b.style.cssText="vertical-align:top;height:16px;width:16px;margin-left:4px;background-repeat:no-repeat;background-position:center bottom;cursor:pointer;";mxUtils.setOpacity(b,70);var f=function(){b.setAttribute("src",Editor.helpImage);b.setAttribute("title",mxResources.get("help"));for(var a=0;a<d.length;a++)if(0<d[a].ext.length&&c.value.toLowerCase().substring(c.value.length-d[a].ext.length-1)=="."+d[a].ext){b.setAttribute("src",
mxClient.imageBasePath+"/warning.png");b.setAttribute("title",mxResources.get(d[a].title));break}};mxEvent.addListener(c,"keyup",f);mxEvent.addListener(c,"change",f);mxEvent.addListener(b,"click",function(c){var d=b.getAttribute("title");b.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=d&&a.showError(null,d,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);
mxEvent.consume(c)});f();return b};
@@ -2247,7 +2247,7 @@ d="url("+this.gridImage+")";var f=c=0;null!=a.view.backgroundPageShape&&(f=this.
b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=e,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],e=1;e<this.gridSteps;e++){var f=e*b;d.push("M 0 "+f+" L "+c+" "+f+" M "+f+" 0 L "+f+" "+c)}return'<svg width="'+
c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,c){a.apply(this,arguments);if(null!=this.shiftPreview1){var d=
this.view.canvas;null!=d.ownerSVGElement&&(d=d.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+b,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+c,e))+"px";d.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,e=this.view.translate,f=this.pageFormat,g=d*this.pageScale,h=this.view.getBackgroundPageBounds();b=h.width;c=h.height;var k=
-new mxRectangle(d*e.x,d*e.y,f.width*g,f.height*g),v=(a=a&&Math.min(k.width,k.height)>this.minPageBreakDist)?Math.ceil(c/k.height)-1:0,r=a?Math.ceil(b/k.width)-1:0,w=h.x+b,t=h.y+c;null==this.horizontalPageBreaks&&0<v&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<r&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?v:r,c=0;c<=b;c++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(h.x),Math.round(h.y+(c+1)*k.height)),
+new mxRectangle(d*e.x,d*e.y,f.width*g,f.height*g),v=(a=a&&Math.min(k.width,k.height)>this.minPageBreakDist)?Math.ceil(c/k.height)-1:0,q=a?Math.ceil(b/k.width)-1:0,w=h.x+b,t=h.y+c;null==this.horizontalPageBreaks&&0<v&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<q&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?v:q,c=0;c<=b;c++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(h.x),Math.round(h.y+(c+1)*k.height)),
new mxPoint(Math.round(w),Math.round(h.y+(c+1)*k.height))]:[new mxPoint(Math.round(h.x+(c+1)*k.width),Math.round(h.y)),new mxPoint(Math.round(h.x+(c+1)*k.width),Math.round(t))];null!=a[c]?(a[c].points=d,a[c].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[c]=d)}for(c=b;c<a.length;c++)a[c].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,b,d){for(var e=0;e<b.length;e++){if(this.graph.isTableCell(b[e])||this.graph.isTableRow(b[e]))return!1;if(this.graph.getModel().isVertex(b[e])){var f=this.graph.getCellGeometry(b[e]);if(null!=f&&f.relative)return!1}}return c.apply(this,arguments)};var d=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=d.apply(this,arguments);
a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,e=this.graph.pageScale,
@@ -2258,21 +2258,21 @@ this.graph.isTableCell(a)&&this.graph.isCellSelected(f);return d};mxPopupMenuHan
mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,b.isEnabled=function(){return!1},b.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!b.standalone){this.createDivs();this.createUi();this.refresh();var f=mxUtils.bind(this,
function(a){null==a&&(a=window.event);return b.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=f,this.menubarContainer.onmousedown=f,this.toolbarContainer.onselectstart=f,this.toolbarContainer.onmousedown=f,this.diagramContainer.onselectstart=f,this.diagramContainer.onmousedown=f,this.sidebarContainer.onselectstart=f,this.sidebarContainer.onmousedown=f,this.formatContainer.onselectstart=f,this.formatContainer.onmousedown=f,this.footerContainer.onselectstart=
f,this.footerContainer.onmousedown=f,null!=this.tabContainer&&(this.tabContainer.onselectstart=f));!this.editor.chromeless||this.editor.editable?(c=function(a){if(null!=a){var b=mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return f(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):b.panningHandler.usePopupTrigger=
-!1;b.init(this.diagramContainer);mxClient.IS_SVG&&null!=b.view.getDrawPane()&&(c=b.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=b.graphHandler){var e=b.graphHandler.start;b.graphHandler.start=function(){null!=r.hoverIcons&&r.hoverIcons.reset();e.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-
+!1;b.init(this.diagramContainer);mxClient.IS_SVG&&null!=b.view.getDrawPane()&&(c=b.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=b.graphHandler){var e=b.graphHandler.start;b.graphHandler.start=function(){null!=q.hoverIcons&&q.hoverIcons.reset();e.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-
b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var h=!1,g=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return h||g.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||b.isEditing()?mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(h=!0,this.hoverIcons.reset(),
b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";h=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var k=b.panningHandler.isForcePanningEvent;b.panningHandler.isForcePanningEvent=function(a){return k.apply(this,arguments)||h||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&
-(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var l=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return l.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var n=b.isZoomWheelEvent;b.isZoomWheelEvent=function(){return h||n.apply(this,arguments)};var m=!1,p=null,u=null,q=null,v=
-mxUtils.bind(this,function(){if(null!=this.toolbar&&m!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==q)this.toolbar.createTextToolbar();else{for(var e=0;e<q.length;e++)this.toolbar.container.appendChild(q[e]);this.toolbar.fontMenu=p;this.toolbar.sizeMenu=u}m=b.cellEditor.isContentEditing();
-p=a;u=d;q=c}}),r=this,w=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){w.apply(this,arguments);v();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=r.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-1)&&(d=d.substring(0,d.length-1));r.toolbar.setFontName(d);
-r.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){try{t.apply(this,arguments),v()}catch(N){r.handleError(N)}};b.container.setAttribute("tabindex","0");b.container.style.cursor="default";if(window.self===
-window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(I){}var x=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();x.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=
-function(){return keyHandler};var y="rounded shadow glass dashed dashPattern labelBackgroundColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),B="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" ");this.setDefaultStyle=function(a){try{var c=
+(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var l=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return l.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var n=b.isZoomWheelEvent;b.isZoomWheelEvent=function(){return h||n.apply(this,arguments)};var m=!1,p=null,u=null,r=null,v=
+mxUtils.bind(this,function(){if(null!=this.toolbar&&m!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==r)this.toolbar.createTextToolbar();else{for(var e=0;e<r.length;e++)this.toolbar.container.appendChild(r[e]);this.toolbar.fontMenu=p;this.toolbar.sizeMenu=u}m=b.cellEditor.isContentEditing();
+p=a;u=d;r=c}}),q=this,w=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){w.apply(this,arguments);v();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-1)&&(d=d.substring(0,d.length-1));q.toolbar.setFontName(d);
+q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){try{t.apply(this,arguments),v()}catch(N){q.handleError(N)}};b.container.setAttribute("tabindex","0");b.container.style.cursor="default";if(window.self===
+window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(I){}var y=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();y.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=
+function(){return keyHandler};var x="rounded shadow glass dashed dashPattern labelBackgroundColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),B="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" ");this.setDefaultStyle=function(a){try{var c=
b.view.getState(a);if(null!=c){var d=a.clone();d.style="";var e=b.getCellStyle(d);a=[];var d=[],f;for(f in c.style)e[f]!=c.style[f]&&(a.push(c.style[f]),d.push(f));for(var g=b.getModel().getStyle(c.cell),h=null!=g?g.split(";"):[],g=0;g<h.length;g++){var k=h[g],l=k.indexOf("=");if(0<=l){f=k.substring(0,l);var n=k.substring(l+1);null!=e[f]&&"none"==n&&(a.push(n),d.push(f))}}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",
d,"values",a,"cells",[c.cell]))}}catch(Q){this.handleError(Q)}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var A=["fontFamily","fontSize","fontColor"],C="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),z=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),
-["strokeColor","strokeWidth"],["fillColor","gradientColor"],A,["opacity"],["align"],["html"]];for(a=0;a<z.length;a++)for(c=0;c<z[a].length;c++)y.push(z[a][c]);for(a=0;a<B.length;a++)0>mxUtils.indexOf(y,B[a])&&y.push(B[a]);var E=function(a,c,d){d=null!=d?d:b.getModel();d.beginUpdate();try{for(var e=0;e<a.length;e++){var f=a[e],g;if(c)g=["fontSize","fontFamily","fontColor"];else{var h=d.getStyle(f),k=null!=h?h.split(";"):[];g=y.slice();for(var l=0;l<k.length;l++){var n=k[l],p=n.indexOf("=");if(0<=p){var m=
-n.substring(0,p),q=mxUtils.indexOf(g,m);0<=q&&g.splice(q,1);for(var r=0;r<z.length;r++){var u=z[r];if(0<=mxUtils.indexOf(u,m))for(var t=0;t<u.length;t++){var v=mxUtils.indexOf(g,u[t]);0<=v&&g.splice(v,1)}}}}}for(var w=d.isEdge(f),H=w?b.currentEdgeStyle:b.currentVertexStyle,A=d.getStyle(f),l=0;l<g.length;l++){var m=g[l],N=H[m];null==N||"shape"==m&&!w||w&&!(0>mxUtils.indexOf(B,m))||(A=mxUtils.setStyle(A,m,N))}d.setStyle(f,A)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){E(b.getProperty("cells"))});
+["strokeColor","strokeWidth"],["fillColor","gradientColor"],A,["opacity"],["align"],["html"]];for(a=0;a<z.length;a++)for(c=0;c<z[a].length;c++)x.push(z[a][c]);for(a=0;a<B.length;a++)0>mxUtils.indexOf(x,B[a])&&x.push(B[a]);var E=function(a,c,d){d=null!=d?d:b.getModel();d.beginUpdate();try{for(var e=0;e<a.length;e++){var f=a[e],g;if(c)g=["fontSize","fontFamily","fontColor"];else{var h=d.getStyle(f),k=null!=h?h.split(";"):[];g=x.slice();for(var l=0;l<k.length;l++){var n=k[l],p=n.indexOf("=");if(0<=p){var m=
+n.substring(0,p),r=mxUtils.indexOf(g,m);0<=r&&g.splice(r,1);for(var q=0;q<z.length;q++){var t=z[q];if(0<=mxUtils.indexOf(t,m))for(var u=0;u<t.length;u++){var v=mxUtils.indexOf(g,t[u]);0<=v&&g.splice(v,1)}}}}}for(var w=d.isEdge(f),H=w?b.currentEdgeStyle:b.currentVertexStyle,A=d.getStyle(f),l=0;l<g.length;l++){var m=g[l],N=H[m];null==N||"shape"==m&&!w||w&&!(0>mxUtils.indexOf(B,m))||(A=mxUtils.setStyle(A,m,N))}d.setStyle(f,A)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){E(b.getProperty("cells"))});
b.addListener("textInserted",function(a,b){E(b.getProperty("cells"),!0)});this.insertHandler=E;b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));E(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=
-c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(A,d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(B,d[g]))f||0<=mxUtils.indexOf(C,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(y,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(y,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=
+c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(A,d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(B,d[g]))f||0<=mxUtils.indexOf(C,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(x,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(x,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=
h[g];if(f||k||0<=mxUtils.indexOf(C,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":
"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):
"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,
@@ -2285,15 +2285,16 @@ EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;Edi
EditorUi.prototype.init=function(){var a=this.editor.graph;if(!a.standalone){"0"!=urlParams["shape-picker"]&&this.installShapePicker();mxEvent.addListener(a.container,"scroll",mxUtils.bind(this,function(){a.tooltipHandler.hide();null!=a.connectionHandler&&null!=a.connectionHandler.constraintHandler&&a.connectionHandler.constraintHandler.reset()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){a.tooltipHandler.hide();var b=a.getRubberband();null!=b&&b.cancel()}));mxEvent.addListener(a.container,
"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=a.setDefaultParent,d=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
arguments);d.updateActionStates()};a.editLink=d.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};
-EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){"mouseDown"==d.getProperty("eventName")&&c.hideShapePicker()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));var d=
-a.dblClick;a.dblClick=function(a,f){if(this.isEnabled())if(null!=f||null==c.sidebar||mxEvent.isShiftDown(a))d.apply(this,arguments);else{var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));c.showShapePicker(b.x,b.y)}}};
-EditorUi.prototype.showShapePicker=function(a,c,d,b){d=this.getCellsForShapePicker(d);if(null!=d&&0<d.length){var f=this,e=this.editor.graph,h=document.createElement("div");h.className="geToolbarContainer geSidebarContainer geSidebar";h.style.cssText="position:absolute;left:"+(a-70)+"px;top:"+c+"px;width:140px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;";e.container.appendChild(h);for(var g=mxUtils.bind(this,function(d){var g=document.createElement("a");
+EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){"mouseDown"==b.getProperty("eventName")&&c.hideShapePicker()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));var d=
+a.dblClick;a.dblClick=function(a,b){if(this.isEnabled())if(null!=b||null==c.sidebar||mxEvent.isShiftDown(a))d.apply(this,arguments);else{var e=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));c.showShapePicker(e.x,e.y)}};if(null!=this.hoverIcons){var b=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,h){var f=h.getEvent();mxEvent.isControlDown(f)||mxEvent.isShiftDown(f)?b.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,
+f,null,null,mxUtils.bind(this,function(b,e,f){b=a.getCompositeParent(d.cell);for(e=a.getCellGeometry(b);null!=b&&a.model.isVertex(b)&&null!=e&&e.relative;)cell=b,b=a.model.getParent(cell),e=a.getCellGeometry(b);c.showShapePicker(h.getGraphX(),h.getGraphY(),b,mxUtils.bind(this,function(a){f(a)}))}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,f,this)}))}}};
+EditorUi.prototype.showShapePicker=function(a,c,d,b){d=this.getCellsForShapePicker(d);if(null!=d&&0<d.length){var f=this,e=this.editor.graph,h=document.createElement("div");h.className="geToolbarContainer geSidebarContainer geSidebar";h.style.cssText="position:absolute;left:"+(a-22)+"px;top:"+(c-22)+"px;width:140px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;";e.container.appendChild(h);for(var g=mxUtils.bind(this,function(d){var g=document.createElement("a");
g.className="geItem";g.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";h.appendChild(g);f.insertHandler([d],""!=d.value,this.sidebar.graph.model);this.sidebar.createThumb([d],25,25,g,null,!0,!1,d.geometry.width,d.geometry.height);mxEvent.addListener(g,"click",function(){d.geometry.x=e.snap(Math.round(a/e.view.scale)-e.view.translate.x-d.geometry.width/2);d.geometry.y=e.snap(Math.round(c/e.view.scale)-
-e.view.translate.y-d.geometry.height/2);e.model.beginUpdate();try{null!=b?b(d):e.addCell(d)}finally{e.model.endUpdate()}null==b&&(e.setSelectionCell(d),e.scrollCellToVisible(e.getSelectionCell()),e.startEditingAtCell(d));f.hideShapePicker()})}),k=0;k<d.length;k++)g(d[k]);this.shapePickerCallback=b;this.shapePicker=h}};
-EditorUi.prototype.getCellsForShapePicker=function(a){var c=mxUtils.bind(this,function(a,b,c,e){return this.editor.graph.createVertex(null,null,e||"",0,0,b||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("rounded=1;whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("rhombus;whiteSpace=wrap;html=1;",
-80,80),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;"),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;",120,80),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",
-120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",80,100),c("shape=card;whiteSpace=wrap;html=1;",80,100),c("shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;",120,80),c("shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;",
-30,60)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9!=a.which||!c.isEnabled()||mxEvent.isAltDown(a)||c.isEditing()&&mxEvent.isShiftDown(a)||(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))};
+e.view.translate.y-d.geometry.height/2);e.model.beginUpdate();try{null!=b?b(d):e.addCell(d)}finally{e.model.endUpdate()}null==b&&(e.setSelectionCell(d),e.scrollCellToVisible(e.getSelectionCell()),e.startEditingAtCell(d));f.hideShapePicker()})}),k=0;k<d.length;k++)g(d[k]);this.shapePickerCallback=b;this.shapePicker=h;e.tooltipHandler.hideTooltip();this.hideCurrentMenu()}};
+EditorUi.prototype.getCellsForShapePicker=function(a){var c=mxUtils.bind(this,function(a,b,c,e){return this.editor.graph.createVertex(null,null,e||"",0,0,b||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;",120,80),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;"),
+c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",120,80),c("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",
+80,100),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80)]};
+EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9!=a.which||!c.isEnabled()||mxEvent.isAltDown(a)||c.isEditing()&&mxEvent.isShiftDown(a)||(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))};
EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,null!=c.textarea&&(c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a))))};
EditorUi.prototype.isImmediateEditingEvent=function(a){return!0};
EditorUi.prototype.getCssClassForMarker=function(a,c,d,b){return"flexArrow"==c?null!=d&&d!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==d||"halfCircle"==d?"geSprite geSvgSprite geSprite-"+d+("end"==a?" geFlipSprite":""):d==mxConstants.ARROW_CLASSIC?"1"==b?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":d==mxConstants.ARROW_CLASSIC_THIN?"1"==b?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":d==mxConstants.ARROW_OPEN?
@@ -2302,13 +2303,13 @@ d==mxConstants.ARROW_DIAMOND_THIN?"1"==b?"geSprite geSprite-"+a+"thindiamond":"g
d?"geSprite geSprite-"+a+"eronetoone":"ERmany"==d?"geSprite geSprite-"+a+"ermany":"ERoneToMany"==d?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==d?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==d?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,c=this.actions.get("paste"),d=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));d.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipboard.cut=function(b){b.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(b){var c=null;if(b.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var c=c||b.getSelectionCells(),c=b.getExportableCells(b.model.getTopmostCells(c)),d={},e=b.createCellLookup(c),f=b.cloneCells(c,null,d),n=new mxGraphModel,m=n.getChildAt(n.getRoot(),
-0),p=0;p<f.length;p++){n.add(m,f[p]);var u=b.view.getState(c[p]);if(null!=u){var q=b.getCellGeometry(f[p]);null!=q&&q.relative&&!n.isEdge(c[p])&&null==e[mxObjectIdentity.get(n.getParent(c[p]))]&&(q.offset=null,q.relative=!1,q.x=u.x/u.view.scale-u.view.translate.x,q.y=u.y/u.view.scale-u.view.translate.y)}}b.updateCustomLinks(b.createCellMapping(d,e),f);mxClipboard.insertCount=1;mxClipboard.setCells(f)}a.updatePasteActionStates();return c};var d=mxClipboard.paste;mxClipboard.paste=function(b){var c=
+0),p=0;p<f.length;p++){n.add(m,f[p]);var u=b.view.getState(c[p]);if(null!=u){var r=b.getCellGeometry(f[p]);null!=r&&r.relative&&!n.isEdge(c[p])&&null==e[mxObjectIdentity.get(n.getParent(c[p]))]&&(r.offset=null,r.relative=!1,r.x=u.x/u.view.scale-u.view.translate.x,r.y=u.y/u.view.scale-u.view.translate.y)}}b.updateCustomLinks(b.createCellMapping(d,e),f);mxClipboard.insertCount=1;mxClipboard.setCells(f)}a.updatePasteActionStates();return c};var d=mxClipboard.paste;mxClipboard.paste=function(b){var c=
null;b.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):c=d.apply(this,arguments);a.updatePasteActionStates();return c};var b=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){b.apply(this,arguments);a.updatePasteActionStates()};var f=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){f.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,c){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var c=null,d=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(b,c,d,e){if(null!=a.container&&!a.isViewer()){d=null!=d?d:0;e=null!=e?e:0;var f=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),g=mxUtils.hasScrollbars(a.container),h=a.view.translate,k=a.view.scale,l=mxRectangle.fromRectangle(f);
-l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,n=a.container.scrollLeft,m=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)m+=3;var p=a.container.offsetWidth-m,m=a.container.offsetHeight-m;b=b?Math.max(.3,Math.min(c||1,p/l.width)):k;c=(p-b*l.width)/2/b;var q=0==this.lightboxVerticalDivider?0:(m-b*l.height)/this.lightboxVerticalDivider/b;g&&(c=Math.max(c,0),q=Math.max(q,0));if(g||f.width<p||f.height<m)a.view.scaleAndTranslate(b,
-Math.floor(c-l.x),Math.floor(q-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=n*b/k;else if(0!=d||0!=e)f=a.view.translate,a.view.setTranslate(Math.floor(f.x+d/k),Math.floor(f.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var b=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",b);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",b)});this.editor.addListener("resetGraphView",
+l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,n=a.container.scrollLeft,p=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)p+=3;var m=a.container.offsetWidth-p,p=a.container.offsetHeight-p;b=b?Math.max(.3,Math.min(c||1,m/l.width)):k;c=(m-b*l.width)/2/b;var r=0==this.lightboxVerticalDivider?0:(p-b*l.height)/this.lightboxVerticalDivider/b;g&&(c=Math.max(c,0),r=Math.max(r,0));if(g||f.width<m||f.height<p)a.view.scaleAndTranslate(b,
+Math.floor(c-l.x),Math.floor(r-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=n*b/k;else if(0!=d||0!=e)f=a.view.translate,a.view.setTranslate(Math.floor(f.x+d/k),Math.floor(f.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var b=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",b);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",b)});this.editor.addListener("resetGraphView",
mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var f=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";
this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=a.isViewer()?"0":"50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var e=mxUtils.bind(this,function(){var b=
mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var h=0,e=mxUtils.bind(this,function(a,b,c){h++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",
@@ -2316,16 +2317,16 @@ c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("
k=document.createElement("div");k.style.display="inline-block";k.style.verticalAlign="top";k.style.fontFamily="Helvetica,Arial";k.style.marginTop="8px";k.style.fontSize="14px";k.style.color="#ffffff";this.chromelessToolbar.appendChild(k);var l=e(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),n=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(k.innerHTML="",mxUtils.write(k,
mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});g.style.paddingLeft="0px";g.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",g.style.display="",k.style.display="inline-block"):(l.style.display="none",g.style.display="none",k.style.display="none");n()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",
n)}e(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,
-mxResources.get("fit"));var p=null,u=null,q=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";u=null}),600)}),a||200)}),v=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=u&&(window.clearTimeout(u),
-fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var r=e(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=
-null}));var c=r.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
-this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=c.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),w=a.getModel();w.addListener(mxEvent.CHANGE,function(){r.style.display=1<w.getChildCount(w.root)?"":"none"})}this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(b){null!=
+mxResources.get("fit"));var p=null,u=null,r=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";u=null}),600)}),a||200)}),v=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=u&&(window.clearTimeout(u),
+fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var q=e(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=
+null}));var c=q.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=c.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),w=a.getModel();w.addListener(mxEvent.CHANGE,function(){q.style.display=1<w.getChildCount(w.root)?"":"none"})}this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(b){null!=
this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var t=this.lightboxToolbarActions[m];e(t.fn,t.icon,t.tooltip)}null!=f.refreshBtn&&e(mxUtils.bind(this,function(a){f.refreshBtn.url?window.location.href=f.refreshBtn.url:
window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));null!=f.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,function(b){f.fullscreenBtn.url?a.openLink(f.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(b)}),Editor.fullscreenLargeImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(f.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&e(mxUtils.bind(this,
function(a){"1"==urlParams.close||f.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||
-v(30),q())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?q():v(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?q():v(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
-v(30)}));var x=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<x&&Math.abs(this.scrollTop-a.container.scrollTop)<x&&Math.abs(this.startX-c.getGraphX())<x&&Math.abs(this.startY-c.getGraphY())<
-x&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?q():v(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}y.apply(this,arguments)};if(!a.isViewer()){var B=a.sizeDidChange;a.sizeDidChange=
+v(30),r())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():v(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():v(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+v(30)}));var y=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<y&&Math.abs(this.scrollTop-a.container.scrollTop)<y&&Math.abs(this.startX-c.getGraphX())<y&&Math.abs(this.startY-c.getGraphY())<
+y&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?r():v(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var x=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}x.apply(this,arguments)};if(!a.isViewer()){var B=a.sizeDidChange;a.sizeDidChange=
function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),f=Math.ceil(2*c.y+b.height*d.height),g=a.minimumGraphSize;if(null==g||g.width!=e||g.height!=f)a.minimumGraphSize=new mxRectangle(0,0,e,f);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==c?B.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=
b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var A=a.view.getBackgroundPane(),C=a.view.getDrawPane();a.cumulativeZoomFactor=1;var z=null,E=null,I=null,H=null,N=function(b){null!=z&&window.clearTimeout(z);window.setTimeout(function(){a.isMouseDown||(z=window.setTimeout(mxUtils.bind(this,
function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),C.style.transformOrigin="",A.style.transformOrigin="",mxClient.IS_SF?(C.style.transform="scale(1)",A.style.transform="scale(1)",window.setTimeout(function(){C.style.transform="";A.style.transform=""},0)):(C.style.transform=
@@ -2441,8 +2442,8 @@ null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for
Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var d=document.createElement("div");d.className="geSidebar";d.style.boxSizing="border-box";d.style.overflow="hidden";d.style.width="100%";d.style.padding="8px";d.style.paddingTop="14px";d.style.paddingBottom="0px";a||(d.style.display="none");var b=document.createElement("div");b.style.whiteSpace="nowrap";b.style.textOverflow="clip";b.style.paddingBottom="8px";
b.style.cursor="default";var f=document.createElement("input");f.setAttribute("placeholder",mxResources.get("searchShapes"));f.setAttribute("type","text");f.style.fontSize="12px";f.style.overflow="hidden";f.style.boxSizing="border-box";f.style.border="solid 1px #d5d5d5";f.style.borderRadius="4px";f.style.width="100%";f.style.outline="none";f.style.padding="6px";f.style.paddingRight="20px";b.appendChild(f);var e=document.createElement("img");e.setAttribute("src",Sidebar.prototype.searchImage);e.setAttribute("title",
mxResources.get("search"));e.style.position="relative";e.style.left="-18px";mxClient.IS_QUIRKS?(f.style.height="28px",e.style.top="-4px"):e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";var h;b.appendChild(e);d.appendChild(b);var g=document.createElement("center"),k=mxUtils.button(mxResources.get("moreResults"),function(){h()});k.style.display="none";k.style.lineHeight="normal";k.style.marginTop="4px";k.style.marginBottom="8px";g.style.paddingTop="4px";g.style.paddingBottom=
-"4px";g.appendChild(k);d.appendChild(g);var l="",n=!1,m=!1,p=0,u={},q=12,v=mxUtils.bind(this,function(){n=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",v());f.focus()});h=mxUtils.bind(this,
-function(){q=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(v(),l=f.value,u={},m=!1,p=0),!n&&!m)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";n=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,p,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];n=!1;p++;this.insertSearchHint(d,l,q,p,b,c,e,f);
+"4px";g.appendChild(k);d.appendChild(g);var l="",n=!1,m=!1,p=0,u={},r=12,v=mxUtils.bind(this,function(){n=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",v());f.focus()});h=mxUtils.bind(this,
+function(){r=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(v(),l=f.value,u={},m=!1,p=0),!n&&!m)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";n=!0;var a={};this.currentSearch=a;this.searchEntries(l,r,p,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];n=!1;p++;this.insertSearchHint(d,l,r,p,b,c,e,f);
0==b.length&&1==p&&(l="");null!=g.parentNode&&g.parentNode.removeChild(g);for(c=0;c<b.length;c++)try{var h=b[c]();null==u[h.innerHTML]&&(u[h.innerHTML]="1",d.appendChild(h))}catch(A){}e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",m=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else v(),l=f.value="",u={},k.style.display="none",m=!1,f.focus()});mxEvent.addListener(f,
"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))}));mxEvent.addListener(f,"keyup",mxUtils.bind(this,function(a){""==f.value?(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search"))):(e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("reset")));""==f.value?(m=!0,k.style.display="none"):f.value!=l?(k.style.display="none",m=!1):n||(k.style.display=m?"none":"")}));mxEvent.addListener(f,
"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(f,"selectstart",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(d);this.container.appendChild(a);this.palettes.search=[c,a]};
@@ -2450,7 +2451,7 @@ Sidebar.prototype.insertSearchHint=function(a,c,d,b,f,e,h,g){0==f.length&&1==b&&
Sidebar.prototype.addGeneralPalette=function(a){var c=[this.createVertexTemplateEntry("rounded=0;whiteSpace=wrap;html=1;",120,60,"","Rectangle",null,null,"rect rectangle box"),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;",120,60,"","Rounded Rectangle",null,null,"rounded rect rectangle box"),this.createVertexTemplateEntry("text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",40,20,"Text","Text",null,null,"text textbox textarea label"),
this.createVertexTemplateEntry("text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;",190,120,"<h1>Heading</h1><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>","Textbox",null,null,"text textbox textarea"),this.createVertexTemplateEntry("ellipse;whiteSpace=wrap;html=1;",120,80,"","Ellipse",null,null,"oval ellipse state"),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;aspect=fixed;",
80,80,"","Square",null,null,"square"),this.createVertexTemplateEntry("ellipse;whiteSpace=wrap;html=1;aspect=fixed;",80,80,"","Circle",null,null,"circle"),this.createVertexTemplateEntry("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;",120,60,"","Process",null,null,"process task"),this.createVertexTemplateEntry("rhombus;whiteSpace=wrap;html=1;",80,80,"","Diamond",null,null,"diamond rhombus if condition decision conditional question test"),this.createVertexTemplateEntry("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;",
-120,60,"","Parallelogram"),this.createVertexTemplateEntry("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;",120,80,"","Hexagon",null,null,"hexagon preparation"),this.createVertexTemplateEntry("triangle;whiteSpace=wrap;html=1;",60,80,"","Triangle",null,null,"triangle logic inverter buffer"),this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Cylinder",null,null,"cylinder data database"),this.createVertexTemplateEntry("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
+120,60,"","Parallelogram"),this.createVertexTemplateEntry("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80,"","Hexagon",null,null,"hexagon preparation"),this.createVertexTemplateEntry("triangle;whiteSpace=wrap;html=1;",60,80,"","Triangle",null,null,"triangle logic inverter buffer"),this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Cylinder",null,null,"cylinder data database"),this.createVertexTemplateEntry("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80,"","Cloud",null,null,"cloud network"),this.createVertexTemplateEntry("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80,"","Document"),this.createVertexTemplateEntry("shape=internalStorage;whiteSpace=wrap;html=1;backgroundOutline=1;",80,80,"","Internal Storage"),this.createVertexTemplateEntry("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",120,80,"","Cube"),this.createVertexTemplateEntry("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",
120,80,"","Step"),this.createVertexTemplateEntry("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60,"","Trapezoid"),this.createVertexTemplateEntry("shape=tape;whiteSpace=wrap;html=1;",120,100,"","Tape"),this.createVertexTemplateEntry("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",80,100,"","Note"),this.createVertexTemplateEntry("shape=card;whiteSpace=wrap;html=1;",80,100,"","Card"),this.createVertexTemplateEntry("shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;",
120,80,"","Callout",null,null,"bubble chat thought speech message"),this.createVertexTemplateEntry("shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;",30,60,"Actor","Actor",!1,null,"user person human stickman"),this.createVertexTemplateEntry("shape=xor;whiteSpace=wrap;html=1;",60,80,"","Or",null,null,"logic or"),this.createVertexTemplateEntry("shape=or;whiteSpace=wrap;html=1;",60,80,"","And",null,null,"logic and"),this.createVertexTemplateEntry("shape=dataStorage;whiteSpace=wrap;html=1;",
@@ -2575,12 +2576,12 @@ Sidebar.prototype.updateShapes=function(a,c){var d=this.editorUi.editor.graph,b=
0;g<c.length;g++){var k=c[g];if(d.getModel().isVertex(k)==d.getModel().isVertex(a)||d.getModel().isEdge(k)==d.getModel().isEdge(a)){var l=d.getCurrentCellStyle(c[g]);d.getModel().setStyle(k,e);if("1"==mxUtils.getValue(l,"composite","0"))for(var n=d.model.getChildCount(k);0<=n;n--)d.model.remove(d.model.getChildAt(k,n));"umlLifeline"==l[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=b[mxConstants.STYLE_SHAPE]&&(d.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[k]),d.setCellStyles("participant",b[mxConstants.STYLE_SHAPE],
[k]));for(n=0;n<h.length;n++){var m=l[h[n]];null!=m&&d.setCellStyles(h[n],m,[k])}f.push(k)}}}finally{d.model.endUpdate()}return f};
Sidebar.prototype.createDropHandler=function(a,c,d,b){d=null!=d?d:!0;return mxUtils.bind(this,function(f,e,h,g,k,l){for(l=l?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=l&&l!=this.container;)l=l.parentNode;if(null==l&&f.isEnabled()){a=f.getImportableCells(a);if(0<a.length){f.stopEditing();l=null==h||mxEvent.isAltDown(e)?!1:f.isValidDropTarget(h,a,e);var n=null;null==h||l||(h=null);if(!f.isCellLocked(h||
-f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var m=f.view.scale,p=f.view.translate,u=(g+p.x)*m,q=(k+p.y)*m,v=f.cloneCells(a);f.splitEdge(h,v,null,g-b.width/2,k-b.height/2,u,q);n=v}else 0<a.length&&(n=f.importCells(a,g,k,h));if(null!=f.layoutManager){var r=f.layoutManager.getLayout(h);if(null!=r)for(m=f.view.scale,p=f.view.translate,u=(g+p.x)*m,q=(k+p.y)*m,h=0;h<n.length;h++)r.moveCell(n[h],u,q)}!d||null!=e&&mxEvent.isShiftDown(e)||
+f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var m=f.view.scale,p=f.view.translate,u=(g+p.x)*m,r=(k+p.y)*m,v=f.cloneCells(a);f.splitEdge(h,v,null,g-b.width/2,k-b.height/2,u,r);n=v}else 0<a.length&&(n=f.importCells(a,g,k,h));if(null!=f.layoutManager){var q=f.layoutManager.getLayout(h);if(null!=q)for(m=f.view.scale,p=f.view.translate,u=(g+p.x)*m,r=(k+p.y)*m,h=0;h<n.length;h++)q.moveCell(n[h],u,r)}!d||null!=e&&mxEvent.isShiftDown(e)||
f.fireEvent(new mxEventObject("cellsInserted","cells",n))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!=n&&0<n.length&&(f.scrollCellToVisible(n[0]),f.setSelectionCells(n));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=n&&1==n.length&&window.setTimeout(function(){f.startEditing(n[0])},0)}}mxEvent.consume(e)}})};
Sidebar.prototype.createDragPreview=function(a,c){var d=document.createElement("div");d.style.border=this.dragPreviewBorder;d.style.width=a+"px";d.style.height=c+"px";return d};
-Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),n=g.getCellGeometry(c[b]),m=g.model.getParent(a),p=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(m);if(null!=u&&u.constructor==mxStackLayout&&(p=!1,h=g.view.getState(m),null!=h)){var q=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+=
-q.x;e.y+=q.y;var v=e.getTerminalPoint(!1);null!=v&&(v.x+=q.x,v.y+=q.y)}}var r=n.x,w=n.y;g.model.isEdge(c[b])&&(w=r=0);var t=g.model.isEdge(a)||null!=l&&!l.relative&&p,h=c=g.importCells(c,e.x-(t?r:0),e.y-(t?w:0),t?m:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var x=g.getCellGeometry(c[b]);x.points=null;if(null!=x.getTerminalPoint(!1))x.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(t&&g.model.isVertex(m)){var y=
-g.view.getState(m),q=y.cell!=g.view.currentRoot?new mxPoint(y.x/g.view.scale-g.view.translate.x,y.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else n=g.getCellGeometry(c[b]),r=e.x-Math.round(n.x),w=e.y-Math.round(n.y),e.x=Math.round(n.x),e.y=Math.round(n.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,r,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||
+Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),n=g.getCellGeometry(c[b]),m=g.model.getParent(a),p=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(m);if(null!=u&&u.constructor==mxStackLayout&&(p=!1,h=g.view.getState(m),null!=h)){var r=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+=
+r.x;e.y+=r.y;var v=e.getTerminalPoint(!1);null!=v&&(v.x+=r.x,v.y+=r.y)}}var q=n.x,w=n.y;g.model.isEdge(c[b])&&(w=q=0);var t=g.model.isEdge(a)||null!=l&&!l.relative&&p,h=c=g.importCells(c,e.x-(t?q:0),e.y-(t?w:0),t?m:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var y=g.getCellGeometry(c[b]);y.points=null;if(null!=y.getTerminalPoint(!1))y.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(t&&g.model.isVertex(m)){var x=
+g.view.getState(m),r=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,r.x,r.y,null,null,!0)}}else n=g.getCellGeometry(c[b]),q=e.x-Math.round(n.x),w=e.y-Math.round(n.y),e.x=Math.round(n.x),e.y=Math.round(n.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,q,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||
g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(B){this.editorUi.handleError(B)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h};
Sidebar.prototype.getDropAndConnectGeometry=function(a,c,d,b){var f=this.editorUi.editor.graph,e=f.view,h=1<b.length,g=f.getCellGeometry(a);b=f.getCellGeometry(c);null!=g&&null!=b&&(b=b.clone(),f.model.isEdge(a)?(a=f.view.getState(a),g=a.absolutePoints,c=g[0],f=g[g.length-1],d==mxConstants.DIRECTION_NORTH?(b.x=c.x/e.scale-e.translate.x-b.width/2,b.y=c.y/e.scale-e.translate.y-b.height/2):(b.x=f.x/e.scale-e.translate.x-b.width/2,b.y=f.y/e.scale-e.translate.y-b.height/2)):(g.relative&&(a=f.view.getState(a),
g=g.clone(),g.x=(a.x-e.translate.x)/e.scale,g.y=(a.y-e.translate.y)/e.scale),e=f.defaultEdgeLength,f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=b.getTerminalPoint(!1)?(c=b.getTerminalPoint(!0),f=b.getTerminalPoint(!1),e=f.x-c.x,c=f.y-c.y,e=Math.sqrt(e*e+c*c),b.x=g.getCenterX(),b.y=g.getCenterY(),b.width=1,b.height=1,d==mxConstants.DIRECTION_NORTH?(b.height=e,b.y=g.y-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1)):d==mxConstants.DIRECTION_EAST?(b.width=e,b.x=g.x+g.width,b.setTerminalPoint(new mxPoint(b.x+
@@ -2590,26 +2591,26 @@ b.width/2+e:d==mxConstants.DIRECTION_SOUTH?b.y=b.y+g.height/2+b.height/2+e:d==mx
Sidebar.prototype.isDropStyleTargetIgnored=function(a){return this.graph.isSwimlane(a.cell)||this.graph.isTableCell(a.cell)||this.graph.isTableRow(a.cell)||this.graph.isTable(a.cell)};
Sidebar.prototype.createDragSource=function(a,c,d,b,f){function e(a,b){var c;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(c=document.createElement(mxClient.VML_PREFIX+":image"),c.setAttribute("src",a.src),c.style.borderStyle="none"):(c=document.createElement("div"),c.style.backgroundImage="url("+a.src+")",c.style.backgroundPosition="center",c.style.backgroundRepeat="no-repeat"),c.style.width=a.width+4+"px",c.style.height=a.height+4+"px",c.style.display=mxClient.IS_QUIRKS?
"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),F=d):mxUtils.setOpacity(d,d==z?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,n=null,m=this,p=0;p<b.length&&(null==n&&this.editorUi.editor.graph.model.isVertex(b[p])?
-n=p:null==l&&this.editorUi.editor.graph.model.isEdge(b[p])&&null==this.editorUi.editor.graph.model.getTerminal(b[p],!0)&&(l=p),null==n||null==l);p++);var u=this.isDropStyleEnabled(b,n),q=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,f,g){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=t&&F==z){var h=a.isCellSelected(t.cell)?a.getSelectionCells():[t.cell],h=this.updateShapes(a.model.isEdge(t.cell)?b[0]:b[n],h);a.setSelectionCells(h)}else null!=
-b&&null!=F&&null!=r&&F!=z?(h=a.model.isEdge(r.cell)||null==l?n:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,N,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){q.isActive()&&q.reset()});var v=q.mouseDown;q.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),v.apply(this,arguments))};var r=null,w=
-null,t=null,x=!1,y=e(this.triangleUp,mxResources.get("connect")),B=e(this.triangleRight,mxResources.get("connect")),A=e(this.triangleDown,mxResources.get("connect")),C=e(this.triangleLeft,mxResources.get("connect")),z=e(this.refreshTarget,mxResources.get("replace")),E=null,I=e(this.roundDrop),H=e(this.roundDrop),N=mxConstants.DIRECTION_NORTH,F=null,K=q.createPreviewElement;q.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=
-b.style.width;this.previewElementHeight=b.style.height;return b};var U=q.dragEnter;q.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");U.apply(this,arguments)};var T=q.dragExit;q.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");T.apply(this,arguments)};q.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=F&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=t&&F==z)this.previewElement.style.display=
-a.model.isEdge(t.cell)?"none":"",this.previewElement.style.left=t.x+"px",this.previewElement.style.top=t.y+"px",this.previewElement.style.width=t.width+"px",this.previewElement.style.height=t.height+"px";else if(null!=r&&null!=F){var e=a.model.isEdge(r.cell)||null==l?n:l,g=m.getDropAndConnectGeometry(r.cell,b[e],N,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),p=a.model.getParent(r.cell),u=d.translate.x*d.scale,v=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(p)&&
-p!=d.currentRoot&&(v=d.getState(p),u=v.x,v=v.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+u+"px";this.previewElement.style.top=(g.y-k)*d.scale+v+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=q.currentHighlight.state&&a.model.isEdge(q.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-
-f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var O=(new Date).getTime(),M=0,L=null,Q=this.editorUi.editor.graph.getCellStyle(b[0]);q.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var f=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=f&&!this.graph.isCellConnectable(f)){var g=
-this.graph.getModel().getParent(f);this.graph.getModel().isVertex(g)&&this.graph.isCellConnectable(g)&&(f=g)}a.isCellLocked(f)&&(f=null);var k=a.view.getState(f),g=F=null;L!=k?(L=k,O=(new Date).getTime(),M=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==F&&(L=k,q.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):M=(new Date).getTime()-O;if(u&&2500>M&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=
+n=p:null==l&&this.editorUi.editor.graph.model.isEdge(b[p])&&null==this.editorUi.editor.graph.model.getTerminal(b[p],!0)&&(l=p),null==n||null==l);p++);var u=this.isDropStyleEnabled(b,n),r=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,f,g){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=t&&F==z){var h=a.isCellSelected(t.cell)?a.getSelectionCells():[t.cell],h=this.updateShapes(a.model.isEdge(t.cell)?b[0]:b[n],h);a.setSelectionCells(h)}else null!=
+b&&null!=F&&null!=q&&F!=z?(h=a.model.isEdge(q.cell)||null==l?n:l,a.setSelectionCells(this.dropAndConnect(q.cell,b,N,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){r.isActive()&&r.reset()});var v=r.mouseDown;r.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),v.apply(this,arguments))};var q=null,w=
+null,t=null,y=!1,x=e(this.triangleUp,mxResources.get("connect")),B=e(this.triangleRight,mxResources.get("connect")),A=e(this.triangleDown,mxResources.get("connect")),C=e(this.triangleLeft,mxResources.get("connect")),z=e(this.refreshTarget,mxResources.get("replace")),E=null,I=e(this.roundDrop),H=e(this.roundDrop),N=mxConstants.DIRECTION_NORTH,F=null,K=r.createPreviewElement;r.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=
+b.style.width;this.previewElementHeight=b.style.height;return b};var U=r.dragEnter;r.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");U.apply(this,arguments)};var T=r.dragExit;r.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");T.apply(this,arguments)};r.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=F&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=t&&F==z)this.previewElement.style.display=
+a.model.isEdge(t.cell)?"none":"",this.previewElement.style.left=t.x+"px",this.previewElement.style.top=t.y+"px",this.previewElement.style.width=t.width+"px",this.previewElement.style.height=t.height+"px";else if(null!=q&&null!=F){var e=a.model.isEdge(q.cell)||null==l?n:l,g=m.getDropAndConnectGeometry(q.cell,b[e],N,b),h=a.model.isEdge(q.cell)?null:a.getCellGeometry(q.cell),k=a.getCellGeometry(b[e]),p=a.model.getParent(q.cell),u=d.translate.x*d.scale,v=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(p)&&
+p!=d.currentRoot&&(v=d.getState(p),u=v.x,v=v.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+u+"px";this.previewElement.style.top=(g.y-k)*d.scale+v+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=r.currentHighlight.state&&a.model.isEdge(r.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-
+f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var O=(new Date).getTime(),M=0,L=null,Q=this.editorUi.editor.graph.getCellStyle(b[0]);r.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var f=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=f&&!this.graph.isCellConnectable(f)){var g=
+this.graph.getModel().getParent(f);this.graph.getModel().isVertex(g)&&this.graph.isCellConnectable(g)&&(f=g)}a.isCellLocked(f)&&(f=null);var k=a.view.getState(f),g=F=null;L!=k?(L=k,O=(new Date).getTime(),M=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==F&&(L=k,r.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):M=(new Date).getTime()-O;if(u&&2500>M&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=
mxUtils.getValue(Q,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(Q,mxConstants.STYLE_SHAPE)||1500<M||a.model.isEdge(k.cell))&&M>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(k)&&(a.model.isVertex(k.cell)&&null!=
n||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){t=k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(l.x)+"px";z.style.top=Math.floor(l.y)+"px";null==E&&(a.container.appendChild(z),E=z.parentNode);h(c,d,l,z)}else null==t||!mxUtils.contains(t,c,d)||1500<M&&!mxEvent.isShiftDown(e)?(t=null,null!=E&&(z.parentNode.removeChild(z),
-E=null)):null!=t&&null!=E&&(l=a.model.isEdge(t.cell)?a.view.getPoint(t):new mxPoint(t.getCenterX(),t.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,z));if(x&&null!=r&&!mxEvent.isAltDown(e)&&null==F){g=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var m=r.absolutePoints;null!=I.parentNode&&(l=m[0],g.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,
-this.roundDrop.height),I)));null!=H.parentNode&&(m=m[m.length-1],g.add(h(c,d,new mxRectangle(m.x-this.roundDrop.width/2,m.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),H)))}else l=mxRectangle.fromRectangle(r),null!=r.shape&&null!=r.shape.boundingBox&&(l=mxRectangle.fromRectangle(r.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),m=this.graph.selectionCellsHandler.getHandler(r.cell),null!=m&&(l.x-=m.horizontalOffset/2,l.y-=m.verticalOffset/
-2,l.width+=m.horizontalOffset,l.height+=m.verticalOffset,null!=m.rotationShape&&null!=m.rotationShape.node&&"hidden"!=m.rotationShape.node.style.visibility&&"none"!=m.rotationShape.node.style.display&&null!=m.rotationShape.boundingBox&&l.add(m.rotationShape.boundingBox)),g.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),y)),g.add(h(c,d,new mxRectangle(l.x+l.width,r.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,
-this.triangleRight.height),B)),g.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),A)),g.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),C));null!=g&&g.grow(10)}N=mxConstants.DIRECTION_NORTH;F==B?N=mxConstants.DIRECTION_EAST:F==A||F==H?N=mxConstants.DIRECTION_SOUTH:F==C&&(N=mxConstants.DIRECTION_WEST);null!=t&&F==z&&(k=t);
-l=(null==n||a.isCellConnectable(b[n]))&&(a.model.isEdge(f)&&null!=n||a.model.isVertex(f)&&a.isCellConnectable(f));if(null!=r&&5E3<=M||r!=k&&(null==g||!mxUtils.contains(g,c,d)||500<M&&null==F&&l))if(x=!1,r=5E3>M&&M>this.dropTargetDelay||a.model.isEdge(f)?k:null,null!=r&&l){g=[I,H,y,B,A,C];for(l=0;l<g.length;l++)null!=g[l].parentNode&&g[l].parentNode.removeChild(g[l]);a.model.isEdge(f)?(m=k.absolutePoints,null!=m&&(l=m[0],m=m[m.length-1],g=a.tolerance,new mxRectangle(c-g,d-g,2*g,2*g),I.style.left=Math.floor(l.x-
+E=null)):null!=t&&null!=E&&(l=a.model.isEdge(t.cell)?a.view.getPoint(t):new mxPoint(t.getCenterX(),t.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,z));if(y&&null!=q&&!mxEvent.isAltDown(e)&&null==F){g=mxRectangle.fromRectangle(q);if(a.model.isEdge(q.cell)){var m=q.absolutePoints;null!=I.parentNode&&(l=m[0],g.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,
+this.roundDrop.height),I)));null!=H.parentNode&&(m=m[m.length-1],g.add(h(c,d,new mxRectangle(m.x-this.roundDrop.width/2,m.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),H)))}else l=mxRectangle.fromRectangle(q),null!=q.shape&&null!=q.shape.boundingBox&&(l=mxRectangle.fromRectangle(q.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),m=this.graph.selectionCellsHandler.getHandler(q.cell),null!=m&&(l.x-=m.horizontalOffset/2,l.y-=m.verticalOffset/
+2,l.width+=m.horizontalOffset,l.height+=m.verticalOffset,null!=m.rotationShape&&null!=m.rotationShape.node&&"hidden"!=m.rotationShape.node.style.visibility&&"none"!=m.rotationShape.node.style.display&&null!=m.rotationShape.boundingBox&&l.add(m.rotationShape.boundingBox)),g.add(h(c,d,new mxRectangle(q.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),x)),g.add(h(c,d,new mxRectangle(l.x+l.width,q.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,
+this.triangleRight.height),B)),g.add(h(c,d,new mxRectangle(q.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),A)),g.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,q.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),C));null!=g&&g.grow(10)}N=mxConstants.DIRECTION_NORTH;F==B?N=mxConstants.DIRECTION_EAST:F==A||F==H?N=mxConstants.DIRECTION_SOUTH:F==C&&(N=mxConstants.DIRECTION_WEST);null!=t&&F==z&&(k=t);
+l=(null==n||a.isCellConnectable(b[n]))&&(a.model.isEdge(f)&&null!=n||a.model.isVertex(f)&&a.isCellConnectable(f));if(null!=q&&5E3<=M||q!=k&&(null==g||!mxUtils.contains(g,c,d)||500<M&&null==F&&l))if(y=!1,q=5E3>M&&M>this.dropTargetDelay||a.model.isEdge(f)?k:null,null!=q&&l){g=[I,H,x,B,A,C];for(l=0;l<g.length;l++)null!=g[l].parentNode&&g[l].parentNode.removeChild(g[l]);a.model.isEdge(f)?(m=k.absolutePoints,null!=m&&(l=m[0],m=m[m.length-1],g=a.tolerance,new mxRectangle(c-g,d-g,2*g,2*g),I.style.left=Math.floor(l.x-
this.roundDrop.width/2)+"px",I.style.top=Math.floor(l.y-this.roundDrop.height/2)+"px",H.style.left=Math.floor(m.x-this.roundDrop.width/2)+"px",H.style.top=Math.floor(m.y-this.roundDrop.height/2)+"px",null==a.model.getTerminal(f,!0)&&a.container.appendChild(I),null==a.model.getTerminal(f,!1)&&a.container.appendChild(H))):(l=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(l=mxRectangle.fromRectangle(k.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),
-m=this.graph.selectionCellsHandler.getHandler(k.cell),null!=m&&(l.x-=m.horizontalOffset/2,l.y-=m.verticalOffset/2,l.width+=m.horizontalOffset,l.height+=m.verticalOffset,null!=m.rotationShape&&null!=m.rotationShape.node&&"hidden"!=m.rotationShape.node.style.visibility&&"none"!=m.rotationShape.node.style.display&&null!=m.rotationShape.boundingBox&&l.add(m.rotationShape.boundingBox)),y.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",y.style.top=Math.floor(l.y-this.triangleUp.height)+
-"px",B.style.left=Math.floor(l.x+l.width)+"px",B.style.top=Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",A.style.left=y.style.left,A.style.top=Math.floor(l.y+l.height)+"px",C.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",C.style.top=B.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(y),a.container.appendChild(A)),a.container.appendChild(B),a.container.appendChild(C));null!=k&&(w=a.selectionCellsHandler.getHandler(k.cell),null!=w&&null!=w.setHandlesVisible&&
-w.setHandlesVisible(!1));x=!0}else for(g=[I,H,y,B,A,C],l=0;l<g.length;l++)null!=g[l].parentNode&&g[l].parentNode.removeChild(g[l]);x||null==w||w.setHandlesVisible(!0);f=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=t&&F==z?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);g=a.getModel();if(null!=f&&(null!=F||!a.isSplitTarget(f,b,e))){for(;null!=f&&!a.isValidDropTarget(f,b,e)&&g.isVertex(g.getParent(f));)f=g.getParent(f);null!=f&&(a.view.currentRoot==f||!a.isValidRoot(f)&&0==a.getModel().getChildCount(f)||
-a.isCellLocked(f)||g.isEdge(f)||!a.isValidDropTarget(f,b,e))&&(f=null)}return f});q.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[I,H,z,y,B,A,C],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=w&&w.reset();F=E=t=r=w=null};return q};
+m=this.graph.selectionCellsHandler.getHandler(k.cell),null!=m&&(l.x-=m.horizontalOffset/2,l.y-=m.verticalOffset/2,l.width+=m.horizontalOffset,l.height+=m.verticalOffset,null!=m.rotationShape&&null!=m.rotationShape.node&&"hidden"!=m.rotationShape.node.style.visibility&&"none"!=m.rotationShape.node.style.display&&null!=m.rotationShape.boundingBox&&l.add(m.rotationShape.boundingBox)),x.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",x.style.top=Math.floor(l.y-this.triangleUp.height)+
+"px",B.style.left=Math.floor(l.x+l.width)+"px",B.style.top=Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",A.style.left=x.style.left,A.style.top=Math.floor(l.y+l.height)+"px",C.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",C.style.top=B.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(x),a.container.appendChild(A)),a.container.appendChild(B),a.container.appendChild(C));null!=k&&(w=a.selectionCellsHandler.getHandler(k.cell),null!=w&&null!=w.setHandlesVisible&&
+w.setHandlesVisible(!1));y=!0}else for(g=[I,H,x,B,A,C],l=0;l<g.length;l++)null!=g[l].parentNode&&g[l].parentNode.removeChild(g[l]);y||null==w||w.setHandlesVisible(!0);f=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=t&&F==z?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);g=a.getModel();if(null!=f&&(null!=F||!a.isSplitTarget(f,b,e))){for(;null!=f&&!a.isValidDropTarget(f,b,e)&&g.isVertex(g.getParent(f));)f=g.getParent(f);null!=f&&(a.view.currentRoot==f||!a.isValidRoot(f)&&0==a.getModel().getChildCount(f)||
+a.isCellLocked(f)||g.isEdge(f)||!a.isValidDropTarget(f,b,e))&&(f=null)}return f});r.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[I,H,z,x,B,A,C],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=q&&null!=w&&w.reset();F=E=t=q=w=null};return r};
Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)&&1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}else mxEvent.isShiftDown(d)&&!b.isSelectionEmpty()?(this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell())):(a=mxEvent.isAltDown(d)?b.getFreeInsertPoint():b.getCenterInsertPoint(b.getBoundingBoxFromGeometry(a,!0)),c.drop(b,d,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,c,d){var b=c.mouseDown,f=c.mouseMove,e=c.mouseUp,h=this.editorUi.editor.graph.tolerance,g=null,k=this;c.mouseDown=function(c){b.apply(this,arguments);g=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=g&&(Math.abs(g.x-mxEvent.getClientX(b))>h||Math.abs(g.y-mxEvent.getClientY(b))>
@@ -2650,15 +2651,15 @@ mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtml
!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==b&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,f=this.graph.view.scale,g=this.graph.getPageLayout(),
h=0;h<g.width;h++)b.push(new mxRectangle(((g.x+h)*e+d.x)*f,(g.y*c+d.y)*f,e*f,c*f));for(h=1;h<g.height;h++)b.push(new mxRectangle((g.x*e+d.x)*f,((g.y+h)*c+d.y)*f,e*f,c*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;
return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var p=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var b=p.apply(this,arguments),c=new mxDictionary,d=[],e=0;e<b.length;e++){var f=this.graph.isTableCell(a)&&this.graph.isTableCell(b[e])&&this.graph.isCellSelected(b[e])?this.graph.model.getParent(b[e]):this.graph.isTableRow(a)&&this.graph.isTableRow(b[e])&&this.graph.isCellSelected(b[e])?b[e]:this.graph.getCompositeParent(b[e]);null==f||c.get(f)||(c.put(f,
-!0),d.push(f))}return d};var u=this.graphHandler.start;this.graphHandler.start=function(a,b,c,d){var e=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?e=!0:a=this.graph.model.getParent(a));e||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));u.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var q=new mxRubberband(this);
-this.getRubberband=function(){return q};var v=(new Date).getTime(),r=0,w=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;w.apply(this,arguments);a!=this.currentState?(v=(new Date).getTime(),r=0):r=(new Date).getTime()-v};var t=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<r||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&t.apply(this,arguments)};var x=this.isToggleEvent;this.isToggleEvent=function(a){return x.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var y=q.isForceRubberbandEvent;q.isForceRubberbandEvent=function(a){return y.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&
+!0),d.push(f))}return d};var u=this.graphHandler.start;this.graphHandler.start=function(a,b,c,d){var e=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?e=!0:a=this.graph.model.getParent(a));e||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));u.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var r=new mxRubberband(this);
+this.getRubberband=function(){return r};var v=(new Date).getTime(),q=0,w=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;w.apply(this,arguments);a!=this.currentState?(v=(new Date).getTime(),q=0):q=(new Date).getTime()-v};var t=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<q||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&t.apply(this,arguments)};var y=this.isToggleEvent;this.isToggleEvent=function(a){return y.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var x=r.isForceRubberbandEvent;r.isForceRubberbandEvent=function(a){return x.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&
mxEvent.isTouchEvent(a.getEvent())};var B=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(B=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=B)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var A=this.click;this.click=
function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return A.apply(this,arguments);var c=b?a.sourceState.cell:a.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)));this.isEnabled()&&b&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=
a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var C=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getClickableLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return C.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,
-b,c,d,e,f){f=null!=f?f:[];if(0<c||0<d){var g=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=g.getRoot()));if(null!=e)for(var l=g.getChildCount(e),m=0;m<l;m++){var n=g.getChildAt(e,m),p=this.view.getState(n);if(null!=p&&this.isCellVisible(n)&&"1"!=mxUtils.getValue(p.style,"locked","0")){var q=mxUtils.getValue(p.style,mxConstants.STYLE_ROTATION)||0;0!=q&&(p=mxUtils.getBoundingBox(p,q));(g.isEdge(n)||g.isVertex(n))&&p.x>=a&&p.y+p.height<=k&&p.y>=b&&p.x+p.width<=h&&f.push(n);
+b,c,d,e,f){f=null!=f?f:[];if(0<c||0<d){var g=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=g.getRoot()));if(null!=e)for(var l=g.getChildCount(e),m=0;m<l;m++){var n=g.getChildAt(e,m),p=this.view.getState(n);if(null!=p&&this.isCellVisible(n)&&"1"!=mxUtils.getValue(p.style,"locked","0")){var r=mxUtils.getValue(p.style,mxConstants.STYLE_ROTATION)||0;0!=r&&(p=mxUtils.getBoundingBox(p,r));(g.isEdge(n)||g.isVertex(n))&&p.x>=a&&p.y+p.height<=k&&p.y>=b&&p.x+p.width<=h&&f.push(n);
this.getAllCells(a,b,c,d,n,f)}}}return f};var z=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:z.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var E=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==
-b.getProperty("eventName")){var c=b.getProperty("event").getState();E=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),q.start(c.x,c.y)):null!=E?this.addSelectionCells(E):1<this.getSelectionCount()&&this.isCellSelected(d)&&
+b.getProperty("eventName")){var c=b.getProperty("event").getState();E=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),r.start(c.x,c.y)):null!=E?this.addSelectionCells(E):1<this.getSelectionCount()&&this.isCellSelected(d)&&
this.removeSelectionCell(d);E=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var c=a.view.graph;return b&&(c.isCellSelected(a.cell)||c.isTableRow(a.cell)&&c.selectionCellsHandler.isHandled(c.model.getParent(a.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,
!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var I=this.updateMouseEvent;this.updateMouseEvent=function(a){a=I.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;
Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;Graph.minTableColumnWidth=20;Graph.minTableRowHeight=20;Graph.foreignObjectWarningText="Viewer does not support full SVG 1.1";Graph.foreignObjectWarningLink="https://desk.draw.io/support/solutions/articles/16000042487";
@@ -2699,21 +2700,21 @@ Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);ret
Graph.prototype.getClickableLinkForCell=function(a){do{var c=this.getLinkForCell(a);if(null!=c)return c;a=this.model.getParent(a)}while(null!=a);return null};Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
Graph.prototype.formatDate=function(a,c,d){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var b=this.dateFormatCache,f=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,h=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(b.masks[c]||c||b.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),d=!0);var g=d?"getUTC":"get",k=a[g+"Date"](),l=a[g+"Day"](),n=a[g+"Month"](),m=a[g+"FullYear"](),p=a[g+"Hours"](),u=a[g+"Minutes"](),q=a[g+"Seconds"](),g=a[g+"Milliseconds"](),v=d?0:a.getTimezoneOffset(),r={d:k,dd:h(k),ddd:b.i18n.dayNames[l],dddd:b.i18n.dayNames[l+7],m:n+1,mm:h(n+1),mmm:b.i18n.monthNames[n],mmmm:b.i18n.monthNames[n+
-12],yy:String(m).slice(2),yyyy:m,h:p%12||12,hh:h(p%12||12),H:p,HH:h(p),M:u,MM:h(u),s:q,ss:h(q),l:h(g,3),L:h(99<g?Math.round(g/10):g),t:12>p?"a":"p",tt:12>p?"am":"pm",T:12>p?"A":"P",TT:12>p?"AM":"PM",Z:d?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<v?"-":"+")+h(100*Math.floor(Math.abs(v)/60)+Math.abs(v)%60,4),S:["th","st","nd","rd"][3<k%10?0:(10!=k%100-k%10)*k%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in r?r[a]:a.slice(1,
+/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(b.masks[c]||c||b.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),d=!0);var g=d?"getUTC":"get",k=a[g+"Date"](),l=a[g+"Day"](),n=a[g+"Month"](),m=a[g+"FullYear"](),p=a[g+"Hours"](),u=a[g+"Minutes"](),r=a[g+"Seconds"](),g=a[g+"Milliseconds"](),v=d?0:a.getTimezoneOffset(),q={d:k,dd:h(k),ddd:b.i18n.dayNames[l],dddd:b.i18n.dayNames[l+7],m:n+1,mm:h(n+1),mmm:b.i18n.monthNames[n],mmmm:b.i18n.monthNames[n+
+12],yy:String(m).slice(2),yyyy:m,h:p%12||12,hh:h(p%12||12),H:p,HH:h(p),M:u,MM:h(u),s:r,ss:h(r),l:h(g,3),L:h(99<g?Math.round(g/10):g),t:12>p?"a":"p",tt:12>p?"am":"pm",T:12>p?"A":"P",TT:12>p?"AM":"PM",Z:d?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<v?"-":"+")+h(100*Math.floor(Math.abs(v)/60)+Math.abs(v)%60,4),S:["th","st","nd","rd"][3<k%10?0:(10!=k%100-k%10)*k%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in q?q[a]:a.slice(1,
a.length-1)})};
Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var c=this.getModel(),d=c.getChildCount(c.root),b=0;b<d;b++)mxUtils.bind(this,function(b){var d=document.createElement("div");d.style.overflow="hidden";d.style.textOverflow="ellipsis";d.style.padding="2px";d.style.whiteSpace="nowrap";var f=document.createElement("input");f.style.display="inline-block";f.setAttribute("type","checkbox");c.isVisible(b)&&(f.setAttribute("checked","checked"),
f.defaultChecked=!0);d.appendChild(f);var g=this.convertValueToString(b)||mxResources.get("background")||"Background";d.setAttribute("title",g);mxUtils.write(d,g);a.appendChild(d);mxEvent.addListener(f,"click",function(){null!=f.getAttribute("checked")?f.removeAttribute("checked"):f.setAttribute("checked","checked");c.setVisible(b,f.checked)})})(c.getChildAt(c.root,b));return a};
Graph.prototype.replacePlaceholders=function(a,c){var d=[];if(null!=c){for(var b=0;match=this.placeholderPattern.exec(c);){var f=match[0];if(2<f.length&&"%label%"!=f&&"%tooltip%"!=f){var e=null;if(match.index>b&&"%"==c.charAt(match.index-1))e=f.substring(1);else{var h=f.substring(1,f.length-1);if("id"==h)e=a.id;else if(0>h.indexOf("{"))for(var g=a;null==e&&null!=g;)null!=g.value&&"object"==typeof g.value&&(e=g.hasAttribute(h)?null!=g.getAttribute(h)?g.getAttribute(h):"":null),g=this.model.getParent(g);
null==e&&(e=this.getGlobalVariable(h))}d.push(c.substring(b,match.index)+(null!=e?e:f));b=match.index+f.length}}d.push(c.substring(b))}return d.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],d=0;d<a.length;d++){var b=this.model.getCell(a[d].id);null!=b&&c.push(b)}this.setSelectionCells(c)}else this.clearSelection()};
-Graph.prototype.selectCellsForConnectVertex=function(a,c,d){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=d&&(mxEvent.isTouchEvent(c)?d.update(d.getState(this.view.getState(a[1]))):d.reset())):this.setSelectionCells(a)};Graph.prototype.getConnectVertexTargetAt=function(a,c,d,b){return this.getCellAt(c,d)};
+Graph.prototype.selectCellsForConnectVertex=function(a,c,d){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=d&&(mxEvent.isTouchEvent(c)?d.update(d.getState(this.view.getState(a[1]))):d.reset())):this.setSelectionCells(a)};
Graph.prototype.connectVertex=function(a,c,d,b,f,e,h,g){if(a.geometry.relative&&this.model.isEdge(a.parent))return[];e=e?e:!1;var k=this.getCompositeParent(a),l=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(k.geometry.x,k.geometry.y);c==mxConstants.DIRECTION_NORTH?(l.x+=k.geometry.width/2,l.y-=d):c==mxConstants.DIRECTION_SOUTH?(l.x+=k.geometry.width/2,l.y+=k.geometry.height+d):(l.x=c==mxConstants.DIRECTION_WEST?
-l.x-d:l.x+(k.geometry.width+d),l.y+=k.geometry.height/2);d=this.view.getState(this.model.getParent(a));var k=this.view.scale,n=this.view.translate,m=n.x*k,n=n.y*k;null!=d&&this.model.isVertex(d.cell)&&(m=d.x,n=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(l.x+=a.parent.geometry.x,l.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getConnectVertexTargetAt(a,m+l.x*k,n+l.y*k);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=
-this.model.getParent(d)}null!=e&&(d=this.view.getState(a),k=this.view.getState(e),null!=d&&null!=k&&mxUtils.intersects(d,k)&&(e=null));if(f=(!mxEvent.isShiftDown(b)||mxEvent.isControlDown(b))&&!g||f)c==mxConstants.DIRECTION_NORTH?l.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?l.y+=a.geometry.height/2:l.x=c==mxConstants.DIRECTION_WEST?l.x-a.geometry.width/2:l.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||this.isSwimlane(e)||(g=this.getModel().getParent(e),this.getModel().isVertex(g)&&
-this.isCellConnectable(g)&&(e=g));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e)&&!this.isSwimlane(e))e=null;g=[];this.model.beginUpdate();try{var p=null!=e&&this.isSwimlane(e);d=p?null:e;if(null==d&&f){for(var k=null!=h?h:a,u=this.getCellGeometry(k);null!=u&&u.relative;)k=this.getModel().getParent(k),u=this.getCellGeometry(k);k=this.getCompositeParent(k);d=this.duplicateCells([k],!1)[0];u=this.getCellGeometry(d);null!=u&&(u.x=l.x-u.width/2,u.y=l.y-u.height/2);if(p||null!=h)this.addCells([d],
-e,null,null,null,!0),e=null}h=null;null!=this.layoutManager&&(h=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&mxEvent.isShiftDown(b)&&f||null==e&&null!=h&&h.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,d,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var v=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=
-b.parent&&b.parent==q.parent&&(v=b.parent.getIndex(b),this.model.add(b.parent,q,v))}null==e&&null!=d&&null!=h&&null!=a.parent&&h.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(v=a.parent.getIndex(a),this.model.add(a.parent,d,v));null!=q&&g.push(q);null==e&&null!=d&&g.push(d);null==d&&null!=q&&q.geometry.setTerminalPoint(l,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return g};
-Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],d,b;for(b in this.model.cells)if(d=this.model.cells[b],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(a.innerHTML=this.sanitizeHtml(this.getLabel(d)),d=mxUtils.extractTextWithWhitespace([a])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&c.push(d);return c.join(" ")};
+l.x-d:l.x+(k.geometry.width+d),l.y+=k.geometry.height/2);var n=this.view.getState(this.model.getParent(a));d=this.view.scale;var m=this.view.translate,k=m.x*d,m=m.y*d;null!=n&&this.model.isVertex(n.cell)&&(k=n.x,m=n.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(l.x+=a.parent.geometry.x,l.y+=a.parent.geometry.y);var p=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(k+l.x*d,m+l.y*d);this.model.isAncestor(p,a)&&(p=null);for(e=p;null!=e;){if(this.isCellLocked(e)){p=null;break}e=this.model.getParent(e)}null!=
+p&&(e=this.view.getState(a),n=this.view.getState(p),null!=e&&null!=n&&mxUtils.intersects(e,n)&&(p=null));var u=!mxEvent.isShiftDown(b)||mxEvent.isControlDown(b)||f;u&&(c==mxConstants.DIRECTION_NORTH?l.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?l.y+=a.geometry.height/2:l.x=c==mxConstants.DIRECTION_WEST?l.x-a.geometry.width/2:l.x+a.geometry.width/2);null==p||this.isCellConnectable(p)||this.isSwimlane(p)||(f=this.getModel().getParent(p),this.getModel().isVertex(f)&&this.isCellConnectable(f)&&
+(p=f));if(p==a||this.model.isEdge(p)||!this.isCellConnectable(p)&&!this.isSwimlane(p))p=null;var r=[],v=null!=p&&this.isSwimlane(p),q=v?null:p;f=mxUtils.bind(this,function(d){this.model.beginUpdate();try{if(null==q&&u){for(var e=null!=d?d:a,f=this.getCellGeometry(e);null!=f&&f.relative;)e=this.getModel().getParent(e),f=this.getCellGeometry(e);e=this.getCompositeParent(e);q=this.duplicateCells([e],!1)[0];f=this.getCellGeometry(q);null!=f&&(f.x=l.x-f.width/2,f.y=l.y-f.height/2);if(v||null!=d)this.addCells([q],
+p,null,null,null,!0),p=null}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var h=mxEvent.isControlDown(b)&&mxEvent.isShiftDown(b)&&u||null==p&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,q,this.createCurrentEdgeStyle());if(null!=h&&this.connectionHandler.insertBeforeSource){for(var k=null,e=a;null!=e.parent&&null!=e.geometry&&e.geometry.relative&&e.parent!=h.parent;)e=this.model.getParent(e);null!=e&&null!=
+e.parent&&e.parent==h.parent&&(k=e.parent.getIndex(e),this.model.add(e.parent,h,k))}null==p&&null!=q&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(k=a.parent.getIndex(a),this.model.add(a.parent,q,k));null!=h&&r.push(h);null==p&&null!=q&&r.push(q);null==q&&null!=h&&h.geometry.setTerminalPoint(l,!1);null!=h&&this.fireEvent(new mxEventObject("cellsInserted","cells",[h]))}finally{this.model.endUpdate()}if(null!=g)g(r);else return r});if(null!=h&&null==q&&u)h(k+
+l.x*d,m+l.y*d,f);else return f()};Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],d,b;for(b in this.model.cells)if(d=this.model.cells[b],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(a.innerHTML=this.sanitizeHtml(this.getLabel(d)),d=mxUtils.extractTextWithWhitespace([a])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&c.push(d);return c.join(" ")};
Graph.prototype.convertValueToString=function(a){var c=this.model.getValue(a);if(null!=c&&"object"==typeof c){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),d=a,b=null;null==b&&null!=d;)null!=d.value&&"object"==typeof d.value&&(b=d.hasAttribute(c)?null!=d.getAttribute(c)?d.getAttribute(c):"":null),d=this.model.getParent(d);return b||""}return c.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};
Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getCellStyle=function(a){var c=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var d=this.model.getParent(a);this.model.isVertex(d)&&this.isCellCollapsed(a)&&(d=this.layoutManager.getLayout(d),null!=d&&d.constructor==mxStackLayout&&(c[mxConstants.STYLE_HORIZONTAL]=!d.horizontal))}return c};
@@ -2777,16 +2778,16 @@ d){var p=this.getCellGeometry(e);null!=p&&(p=p.clone(),p.width+=c,b.setGeometry(
TableLayout.prototype.getSize=function(a,c){for(var d=0,b=0;b<a.length;b++)if(!this.isVertexIgnored(a[b])){var f=this.graph.getCellGeometry(a[b]);null!=f&&(d+=c?f.width:f.height)}return d};TableLayout.prototype.getRowLayout=function(a,c){for(var d=this.graph.model.getChildCells(a,!0),b=this.graph.getActualStartSize(a,!0),f=this.getSize(d,!0),e=c-b.x-b.width,h=[],b=b.x,g=0;g<d.length;g++){var k=this.graph.getCellGeometry(d[g]);null!=k&&(b+=k.width*e/f,h.push(Math.round(b)))}return h};
TableLayout.prototype.layoutRow=function(a,c,d,b){var f=this.graph.getModel(),e=f.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var h=a.x,g=0;null!=c&&(c=c.slice(),c.splice(0,0,a.x));for(var k=0;k<e.length;k++){var l=this.graph.getCellGeometry(e[k]);null!=l&&(l=l.clone(),l.y=a.y,l.height=d-a.y-a.height,null!=c?(l.x=c[k],l.width=c[k+1]-l.x,k==e.length-1&&k<c.length-2&&(l.width=b-l.x-a.x-a.width)):(l.x=h,h+=l.width,k==e.length-1?l.width=b-a.x-a.width-g:g+=l.width),f.setGeometry(e[k],l))}return g};
TableLayout.prototype.execute=function(a){if(null!=a){var c=this.graph.getActualStartSize(a,!0),d=this.graph.getCellGeometry(a),b=this.graph.getCellStyle(a),f="1"==mxUtils.getValue(b,"resizeLastRow","0"),e="1"==mxUtils.getValue(b,"resizeLast","0"),b="1"==mxUtils.getValue(b,"fixedRows","0"),h=this.graph.getModel(),g=0;h.beginUpdate();try{var k=d.height-c.y-c.height,l=d.width-c.x-c.width,n=h.getChildCells(a,!0),m=this.getSize(n,!1);if(0<k&&0<l&&0<n.length&&0<m){if(f){var p=this.graph.getCellGeometry(n[n.length-
-1]);null!=p&&(p=p.clone(),p.height=k-m+p.height,h.setGeometry(n[n.length-1],p))}for(var u=e?null:this.getRowLayout(n[0],l),q=c.y,v=0;v<n.length;v++)p=this.graph.getCellGeometry(n[v]),null!=p&&(p=p.clone(),p.x=c.x,p.width=l,p.y=Math.round(q),q=f||b?q+p.height:q+p.height/m*k,p.height=Math.round(q)-p.y,h.setGeometry(n[v],p)),g=Math.max(g,this.layoutRow(n[v],u,p.height,l));b&&k<m&&(d=d.clone(),d.height=q+c.height,h.setGeometry(a,d));e&&l<g+Graph.minTableColumnWidth&&(d=d.clone(),d.width=g+c.width+c.x+
+1]);null!=p&&(p=p.clone(),p.height=k-m+p.height,h.setGeometry(n[n.length-1],p))}for(var u=e?null:this.getRowLayout(n[0],l),r=c.y,v=0;v<n.length;v++)p=this.graph.getCellGeometry(n[v]),null!=p&&(p=p.clone(),p.x=c.x,p.width=l,p.y=Math.round(r),r=f||b?r+p.height:r+p.height/m*k,p.height=Math.round(r)-p.y,h.setGeometry(n[v],p)),g=Math.max(g,this.layoutRow(n[v],u,p.height,l));b&&k<m&&(d=d.clone(),d.height=r+c.height,h.setGeometry(a,d));e&&l<g+Graph.minTableColumnWidth&&(d=d.clone(),d.width=g+c.width+c.x+
Graph.minTableColumnWidth,h.setGeometry(a,d))}}finally{h.endUpdate()}}};
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){b=null!=b?b:!0;var d=this.getState(a);null!=d&&b&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=c.apply(this,
arguments);null!=d&&b&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var f=new mxPoint(c,e);f.type=b;d.push(f);f=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==f||f.type!=b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var h=
-b[g+1],k=b[g],w=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,h.x,h.y)<1*this.scale*this.scale;)h=t,g++,t=b[g+2];for(var c=e(0,k.x,k.y)||c,x=0;x<this.validEdges.length;x++){var y=this.validEdges[x],B=y.absolutePoints;if(null!=B&&mxUtils.intersects(a,y)&&"1"!=y.style.noJump)for(y=0;y<B.length-1;y++){for(var A=B[y+1],C=B[y],t=B[y+2];y<B.length-2&&mxUtils.ptSegDistSq(C.x,C.y,t.x,t.y,A.x,A.y)<1*this.scale*this.scale;)A=t,y++,t=B[y+2];t=mxUtils.intersection(k.x,k.y,h.x,h.y,C.x,C.y,A.x,
-A.y);if(null!=t&&(Math.abs(t.x-k.x)>f||Math.abs(t.y-k.y)>f)&&(Math.abs(t.x-h.x)>f||Math.abs(t.y-h.y)>f)&&(Math.abs(t.x-C.x)>f||Math.abs(t.y-C.y)>f)&&(Math.abs(t.x-A.x)>f||Math.abs(t.y-A.y)>f)){A=t.x-k.x;C=t.y-k.y;t={distSq:A*A+C*C,x:t.x,y:t.y};for(A=0;A<w.length;A++)if(w[A].distSq>t.distSq){w.splice(A,0,t);t=null;break}null==t||0!=w.length&&w[w.length-1].x===t.x&&w[w.length-1].y===t.y||w.push(t)}}}for(y=0;y<w.length;y++)c=e(1,w[y].x,w[y].y)||c}t=b[b.length-1];c=e(0,t.x,t.y)||c}a.routedPoints=d;return c}return!1};
+b[g+1],k=b[g],w=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,h.x,h.y)<1*this.scale*this.scale;)h=t,g++,t=b[g+2];for(var c=e(0,k.x,k.y)||c,y=0;y<this.validEdges.length;y++){var x=this.validEdges[y],B=x.absolutePoints;if(null!=B&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<B.length-1;x++){for(var A=B[x+1],C=B[x],t=B[x+2];x<B.length-2&&mxUtils.ptSegDistSq(C.x,C.y,t.x,t.y,A.x,A.y)<1*this.scale*this.scale;)A=t,x++,t=B[x+2];t=mxUtils.intersection(k.x,k.y,h.x,h.y,C.x,C.y,A.x,
+A.y);if(null!=t&&(Math.abs(t.x-k.x)>f||Math.abs(t.y-k.y)>f)&&(Math.abs(t.x-h.x)>f||Math.abs(t.y-h.y)>f)&&(Math.abs(t.x-C.x)>f||Math.abs(t.y-C.y)>f)&&(Math.abs(t.x-A.x)>f||Math.abs(t.y-A.y)>f)){A=t.x-k.x;C=t.y-k.y;t={distSq:A*A+C*C,x:t.x,y:t.y};for(A=0;A<w.length;A++)if(w[A].distSq>t.distSq){w.splice(A,0,t);t=null;break}null==t||0!=w.length&&w[w.length-1].x===t.x&&w[w.length-1].y===t.y||w.push(t)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}t=b[b.length-1];c=e(0,t.x,t.y)||c}a.routedPoints=d;return c}return!1};
var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,
-"jumpStyle","none"),h=!0,k=null,l=null,n=[],t=null;a.begin();for(var x=0;x<this.state.routedPoints.length;x++){var y=this.state.routedPoints[x],B=new mxPoint(y.x/this.scale,y.y/this.scale);0==x?B=b[0]:x==this.state.routedPoints.length-1&&(B=b[b.length-1]);var A=!1;if(null!=k&&1==y.type){var C=this.state.routedPoints[x+1],y=C.x/this.scale-B.x,C=C.y/this.scale-B.y,y=y*y+C*C;null==t&&(t=new mxPoint(B.x-k.x,B.y-k.y),l=Math.sqrt(t.x*t.x+t.y*t.y),0<l?(t.x=t.x*e/l,t.y=t.y*e/l):t=null);y>e*e&&0<l&&(y=k.x-
-B.x,C=k.y-B.y,y=y*y+C*C,y>e*e&&(A=new mxPoint(B.x-t.x,B.y-t.y),y=new mxPoint(B.x+t.x,B.y+t.y),n.push(A),this.addPoints(a,n,c,d,!1,null,h),n=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,h=!1,"sharp"==g?(a.lineTo(A.x-t.y*n,A.y+t.x*n),a.lineTo(y.x-t.y*n,y.y+t.x*n),a.lineTo(y.x,y.y)):"arc"==g?(n*=1.3,a.curveTo(A.x-t.y*n,A.y+t.x*n,y.x-t.y*n,y.y+t.x*n,y.x,y.y)):(a.moveTo(y.x,y.y),h=!0),n=[y],A=!0))}else t=null;A||(n.push(B),k=B)}this.addPoints(a,n,c,d,!1,null,h);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;
+"jumpStyle","none"),h=!0,k=null,l=null,n=[],t=null;a.begin();for(var y=0;y<this.state.routedPoints.length;y++){var x=this.state.routedPoints[y],B=new mxPoint(x.x/this.scale,x.y/this.scale);0==y?B=b[0]:y==this.state.routedPoints.length-1&&(B=b[b.length-1]);var A=!1;if(null!=k&&1==x.type){var C=this.state.routedPoints[y+1],x=C.x/this.scale-B.x,C=C.y/this.scale-B.y,x=x*x+C*C;null==t&&(t=new mxPoint(B.x-k.x,B.y-k.y),l=Math.sqrt(t.x*t.x+t.y*t.y),0<l?(t.x=t.x*e/l,t.y=t.y*e/l):t=null);x>e*e&&0<l&&(x=k.x-
+B.x,C=k.y-B.y,x=x*x+C*C,x>e*e&&(A=new mxPoint(B.x-t.x,B.y-t.y),x=new mxPoint(B.x+t.x,B.y+t.y),n.push(A),this.addPoints(a,n,c,d,!1,null,h),n=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,h=!1,"sharp"==g?(a.lineTo(A.x-t.y*n,A.y+t.x*n),a.lineTo(x.x-t.y*n,x.y+t.x*n),a.lineTo(x.x,x.y)):"arc"==g?(n*=1.3,a.curveTo(A.x-t.y*n,A.y+t.x*n,x.x-t.y*n,x.y+t.x*n,x.x,x.y)):(a.moveTo(x.x,x.y),h=!0),n=[x],A=!0))}else t=null;A||(n.push(B),k=B)}this.addPoints(a,n,c,d,!1,null,h);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;
mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var f=this.getNextPoint(a,c,d),g=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),f=mxUtils.getRotatedPoint(f,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||
0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==h&&g,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),f=mxUtils.getRotatedPoint(f,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,f),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,
a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==d||h<d)c=g,d=h}}null!=c&&(e=c)}return e};var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=
@@ -2815,7 +2816,7 @@ c);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){if(null!=a&&this
!this.isTable(b))};var g=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,b,c,d,e,f,h,k){null==k&&(k=this.model.getParent(a),this.isTable(k)||this.isTableRow(k))&&(k=this.getCellAt(f,h,null,!0,!1));g.apply(this,[a,b,c,d,e,f,h,k])};var k=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)k.apply(this,arguments);else{var d=this.getSelectionCell(),e=null,f=[],g=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(f.push(b),
b==d)e=f.length-1;else if(a&&null==d&&0<f.length||null!=e&&a&&f.length>e||!a&&0<e)return;for(var c=0;c<this.model.getChildCount(b);c++)g(this.model.getChildAt(b,c))});g(this.model.root);0<f.length&&(e=null!=e?mxUtils.mod(e+(a?1:-1),f.length):0,this.setSelectionCell(f[e]))}};var l=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,c,d,e,f,g){g=null!=g?g:{};if(this.isTable(e)){for(var h=[],k=0;k<a.length;k++)this.isTable(a[k])?h=h.concat(this.model.getChildCells(a[k],!0).reverse()):h.push(a[k]);
a=h}this.model.beginUpdate();try{h=[];for(k=0;k<a.length;k++)if(null!=e&&this.isTableRow(a[k])){var G=this.model.getParent(a[k]),J=this.getCellGeometry(a[k]);this.isTable(G)&&h.push(G);if(null!=G&&null!=J&&this.isTable(G)&&this.isTable(e)&&(d||G!=e)){if(!d){var m=this.getCellGeometry(G);null!=m&&(m=m.clone(),m.height-=J.height,this.model.setGeometry(G,m))}m=this.getCellGeometry(e);null!=m&&(m=m.clone(),m.height+=J.height,this.model.setGeometry(e,m));var n=this.model.getChildCells(e,!0);if(0<n.length){var ia=
-d?this.cloneCell(a[k]):a[k],p=this.model.getChildCells(ia,!0),ja=this.model.getChildCells(n[0],!0),W=ja.length-p.length;if(0<W)for(var q=0;q<W;q++){var t=this.cloneCell(p[p.length-1]);null!=t&&(t.value="",this.model.add(ia,t))}else if(0>W)for(q=0;q>W;q--)this.model.remove(p[p.length+q-1]);p=this.model.getChildCells(ia,!0);for(q=0;q<ja.length;q++){var u=this.getCellGeometry(ja[q]),r=this.getCellGeometry(p[q]);null!=u&&null!=r&&(r=r.clone(),r.width=u.width,this.model.setGeometry(p[q],r))}}}}for(var ra=
+d?this.cloneCell(a[k]):a[k],p=this.model.getChildCells(ia,!0),ja=this.model.getChildCells(n[0],!0),W=ja.length-p.length;if(0<W)for(var r=0;r<W;r++){var t=this.cloneCell(p[p.length-1]);null!=t&&(t.value="",this.model.add(ia,t))}else if(0>W)for(r=0;r>W;r--)this.model.remove(p[p.length+r-1]);p=this.model.getChildCells(ia,!0);for(r=0;r<ja.length;r++){var q=this.getCellGeometry(ja[r]),u=this.getCellGeometry(p[r]);null!=q&&null!=u&&(u=u.clone(),u.width=q.width,this.model.setGeometry(p[r],u))}}}}for(var ra=
l.apply(this,arguments),k=0;k<h.length;k++)!d&&this.model.contains(h[k])&&0==this.model.getChildCount(h[k])&&this.model.remove(h[k]);d&&this.updateCustomLinks(this.createCellMapping(g,this.createCellLookup(a)),ra)}finally{this.model.endUpdate()}return ra};var n=Graph.prototype.removeCells;Graph.prototype.removeCells=function(a,b){var c=[];this.model.beginUpdate();try{for(var d=0;d<a.length;d++)if(this.isTableCell(a[d])){var e=this.model.getParent(a[d]),f=this.model.getParent(e);1==this.model.getChildCount(e)&&
1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(c,f)&&c.push(f):this.labelChanged(a[d],"")}else{if(this.isTableRow(a[d])&&(f=this.model.getParent(a[d]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(c,f))){for(var g=this.model.getChildCells(f,!0),h=0,k=0;k<g.length;k++)0<=mxUtils.indexOf(a,g[k])&&h++;h==g.length&&c.push(f)}c.push(a[d])}c=n.apply(this,[c,b])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(a,b){for(var c=0;c<b.length;c++)null!=
b[c]&&this.updateCustomLinksForCell(a,b[c])};Graph.prototype.updateCustomLinksForCell=function(a,b){};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var f=e[c];d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(wa){}return d}if(null!=a.shape&&null!=a.shape.bounds){f=a.shape.direction;
@@ -2823,9 +2824,9 @@ e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(f==mxConstants.DIRE
mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a])}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a,b,c){for(var d=this.getCurrentCellStyle(a),e=!0,f=!0,g=0;g<b.length&&f;g++)e=e&&this.isTable(b[g]),
f=f&&this.isTableRow(b[g]);return("1"!=mxUtils.getValue(d,"part","0")||this.isContainer(a))&&"0"!=mxUtils.getValue(d,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(a))&&!this.isTableRow(a)&&(!this.isTable(a)||f||e)};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,
arguments);if(b&&null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a,b){var c=this.getModel(),d=[];c.beginUpdate();
-try{for(var e=0;e<a.length;e++){var f=a[e];if(c.isEdge(f)){var g=c.getTerminal(f,!0),h=c.getTerminal(f,!1);c.setTerminal(f,h,!0);c.setTerminal(f,g,!1);var k=c.getGeometry(f);if(null!=k){k=k.clone();null!=k.points&&k.points.reverse();var l=k.getTerminalPoint(!0),G=k.getTerminalPoint(!1);k.setTerminalPoint(l,!1);k.setTerminalPoint(G,!0);c.setGeometry(f,k);var J=this.view.getState(f),m=this.view.getState(g),n=this.view.getState(h);if(null!=J){var p=null!=m?this.getConnectionConstraint(J,m,!0):null,q=
-null!=n?this.getConnectionConstraint(J,n,!1):null;this.setConnectionConstraint(f,g,!0,q);this.setConnectionConstraint(f,h,!1,p)}d.push(f)}}else if(c.isVertex(f)&&(k=this.getCellGeometry(f),null!=k)){if(!this.isTable(f)&&!this.isTableRow(f)&&!this.isTableCell(f)){k=k.clone();k.x+=k.width/2-k.height/2;k.y+=k.height/2-k.width/2;var t=k.width;k.width=k.height;k.height=t;c.setGeometry(f,k)}var u=this.view.getState(f);if(null!=u){var r=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,
-mxConstants.DIRECTION_NORTH],v=mxUtils.getValue(u.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,r[mxUtils.mod(mxUtils.indexOf(r,v)+(b?-1:1),r.length)],[f])}d.push(f)}}}finally{c.endUpdate()}return d};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var m=Graph.prototype.processChange;
+try{for(var e=0;e<a.length;e++){var f=a[e];if(c.isEdge(f)){var g=c.getTerminal(f,!0),h=c.getTerminal(f,!1);c.setTerminal(f,h,!0);c.setTerminal(f,g,!1);var k=c.getGeometry(f);if(null!=k){k=k.clone();null!=k.points&&k.points.reverse();var l=k.getTerminalPoint(!0),G=k.getTerminalPoint(!1);k.setTerminalPoint(l,!1);k.setTerminalPoint(G,!0);c.setGeometry(f,k);var J=this.view.getState(f),m=this.view.getState(g),n=this.view.getState(h);if(null!=J){var p=null!=m?this.getConnectionConstraint(J,m,!0):null,r=
+null!=n?this.getConnectionConstraint(J,n,!1):null;this.setConnectionConstraint(f,g,!0,r);this.setConnectionConstraint(f,h,!1,p)}d.push(f)}}else if(c.isVertex(f)&&(k=this.getCellGeometry(f),null!=k)){if(!this.isTable(f)&&!this.isTableRow(f)&&!this.isTableCell(f)){k=k.clone();k.x+=k.width/2-k.height/2;k.y+=k.height/2-k.width/2;var t=k.width;k.width=k.height;k.height=t;c.setGeometry(f,k)}var q=this.view.getState(f);if(null!=q){var u=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,
+mxConstants.DIRECTION_NORTH],v=mxUtils.getValue(q.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,u[mxUtils.mod(mxUtils.indexOf(u,v)+(b?-1:1),u.length)],[f])}d.push(f)}}}finally{c.endUpdate()}return d};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var m=Graph.prototype.processChange;
Graph.prototype.processChange=function(a){if(a instanceof mxGeometryChange&&(this.isTableCell(a.cell)||this.isTableRow(a.cell))&&(null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))){var b=a.cell;this.isTableCell(b)&&(b=this.model.getParent(b));this.isTableRow(b)&&(b=this.model.getParent(b));var c=this.view.getState(b);null!=c&&null!=c.shape&&(this.view.invalidate(b),c.shape.bounds=null)}m.apply(this,arguments);a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&
"object"==typeof a.cell.value&&this.invalidateDescendantsWithPlaceholders(a.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(a){a=this.model.getDescendants(a);if(0<a.length)for(var b=0;b<a.length;b++){var c=this.view.getState(a[b]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(a[b]):this.isReplacePlaceholders(a[b])&&this.view.invalidate(a[b],!1,!1)}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=
b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)};Graph.prototype.processElements=function(a,b){if(null!=a)for(var c=a.getElementsByTagName("*"),d=0;d<c.length;d++)b(c[d])};Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);
@@ -2854,11 +2855,11 @@ a.length-1;0<=f;f--)if(0==f||a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].set
c[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);d=d/h-(a?g.x:
g.y);this.getModel().beginUpdate();try{for(var k=(d-e)/(c.length-1),d=e,f=1;f<c.length-1;f++){var l=this.view.getState(this.model.getParent(c[f].cell)),m=this.getCellGeometry(c[f].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};
Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;var n=f||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==n)throw Error(mxResources.get("drawingEmpty"));
-var J=this.view.scale,p=mxUtils.createXmlDocument(),G=null!=p.createElementNS?p.createElementNS(mxConstants.NS_SVG,"svg"):p.createElement("svg");null!=a&&(null!=G.style?G.style.backgroundColor=a:G.setAttribute("style","background-color:"+a));null==p.createElementNS?(G.setAttribute("xmlns",mxConstants.NS_SVG),G.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):G.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/J;var q=Math.max(1,Math.ceil(n.width*a)+2*c)+(l?5:
-0),ia=Math.max(1,Math.ceil(n.height*a)+2*c)+(l?5:0);G.setAttribute("version","1.1");G.setAttribute("width",q+"px");G.setAttribute("height",ia+"px");G.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+ia);p.appendChild(G);var t=null!=p.createElementNS?p.createElementNS(mxConstants.NS_SVG,"g"):p.createElement("g");G.appendChild(t);var u=this.createSvgCanvas(t);u.foOffset=e?-.5:0;u.textOffset=e?-.5:0;u.imageOffset=e?-.5:0;u.translate(Math.floor((c/b-n.x)/J),Math.floor((c/b-n.y)/J));var r=document.createElement("div"),
-ja=u.getAlternateText;u.getAlternateText=function(a,b,c,d,e,f,g,h,k,l,D,fa,Ua){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(r.innerHTML=f,f=mxUtils.extractTextWithWhitespace(r.childNodes));for(var Y=Math.ceil(2*d/this.state.fontSize),Fa=[],m=0,n=0;(0==Y||m<Y)&&n<f.length;){var J=f.charCodeAt(n);if(10==J||13==J){if(0<m)break}else Fa.push(f.charAt(n)),255>J&&m++;n++}Fa.length<f.length&&1<f.length-Fa.length&&(f=mxUtils.trim(Fa.join(""))+"...");return f}catch(Va){return ja.apply(this,
-arguments)}else return ja.apply(this,arguments)};var W=this.backgroundImage;if(null!=W){b=J/b;var v=this.view.translate,B=new mxRectangle(v.x*b,v.y*b,W.width*b,W.height*b);mxUtils.intersects(n,B)&&u.image(v.x,v.y,W.width,W.height,W.src,!0)}u.scale(a);u.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var y=h.drawCellState,A=h.getLinkForCellState;h.getLinkForCellState=function(a,b){var c=A.apply(this,arguments);return null==c||a.view.graph.isCustomLink(c)?null:c};h.drawCellState=function(a,b){for(var c=
-a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!f&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(f||d)&&y.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),u);this.updateSvgLinks(G,k,!0);this.addForeignObjectWarning(u,G);return G}finally{m&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if(0<b.getElementsByTagName("foreignObject").length){var c=a.createElement("switch"),
+var p=this.view.scale,J=mxUtils.createXmlDocument(),G=null!=J.createElementNS?J.createElementNS(mxConstants.NS_SVG,"svg"):J.createElement("svg");null!=a&&(null!=G.style?G.style.backgroundColor=a:G.setAttribute("style","background-color:"+a));null==J.createElementNS?(G.setAttribute("xmlns",mxConstants.NS_SVG),G.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):G.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(n.width*a)+2*c)+(l?5:
+0),ia=Math.max(1,Math.ceil(n.height*a)+2*c)+(l?5:0);G.setAttribute("version","1.1");G.setAttribute("width",r+"px");G.setAttribute("height",ia+"px");G.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+ia);J.appendChild(G);var t=null!=J.createElementNS?J.createElementNS(mxConstants.NS_SVG,"g"):J.createElement("g");G.appendChild(t);var q=this.createSvgCanvas(t);q.foOffset=e?-.5:0;q.textOffset=e?-.5:0;q.imageOffset=e?-.5:0;q.translate(Math.floor((c/b-n.x)/p),Math.floor((c/b-n.y)/p));var u=document.createElement("div"),
+ja=q.getAlternateText;q.getAlternateText=function(a,b,c,d,e,f,g,h,k,l,D,fa,Ua){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(u.innerHTML=f,f=mxUtils.extractTextWithWhitespace(u.childNodes));for(var Y=Math.ceil(2*d/this.state.fontSize),Fa=[],m=0,n=0;(0==Y||m<Y)&&n<f.length;){var p=f.charCodeAt(n);if(10==p||13==p){if(0<m)break}else Fa.push(f.charAt(n)),255>p&&m++;n++}Fa.length<f.length&&1<f.length-Fa.length&&(f=mxUtils.trim(Fa.join(""))+"...");return f}catch(Va){return ja.apply(this,
+arguments)}else return ja.apply(this,arguments)};var W=this.backgroundImage;if(null!=W){b=p/b;var v=this.view.translate,B=new mxRectangle(v.x*b,v.y*b,W.width*b,W.height*b);mxUtils.intersects(n,B)&&q.image(v.x,v.y,W.width,W.height,W.src,!0)}q.scale(a);q.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var x=h.drawCellState,A=h.getLinkForCellState;h.getLinkForCellState=function(a,b){var c=A.apply(this,arguments);return null==c||a.view.graph.isCustomLink(c)?null:c};h.drawCellState=function(a,b){for(var c=
+a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!f&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(f||d)&&x.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),q);this.updateSvgLinks(G,k,!0);this.addForeignObjectWarning(q,G);return G}finally{m&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if(0<b.getElementsByTagName("foreignObject").length){var c=a.createElement("switch"),
d=a.createElement("g");d.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||b.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=
a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);c.appendChild(d);e.appendChild(f);c.appendChild(e);b.appendChild(c)}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",
b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=
@@ -2878,11 +2879,11 @@ this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,c=!
(this.popupMenuHandler.popupTrigger||!d&&!mxEvent.isMouseEvent(e.getEvent())&&(c&&null==e.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(e.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",
this.textarea)};mxCellEditor.prototype.alignText=function(a,b){var c=null!=b&&mxEvent.isShiftDown(b);if(c||null!=window.getSelection&&null!=window.getSelection().containsNode){var d=!0;this.graph.processElements(this.textarea,function(a){c||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):d=!1});d&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=
window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(ja){}};var u=mxCellRenderer.prototype.initializeLabel;
-mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));u.apply(this,arguments)};var q=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?q.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=
+mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));u.apply(this,arguments)};var r=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?r.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=
!1;var v=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){a=this.graph.getStartEditingCell(a,b);v.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(c)&&null!=
-d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var r=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,
+d&&d.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var q=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,
d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!=a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&
-(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}r.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
+(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}q.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?c(this.textarea,d):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){k=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<k.length&&"\n"==k.charAt(k.length-1)&&(k=k.substring(0,k.length-1));k=this.graph.sanitizeHtml(b?
k.replace(/\n/g,"<br/>"):k,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&
mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,h=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&h.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&h.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+
@@ -2894,11 +2895,11 @@ mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_AL
this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=c:mxUtils.setPrefixedStyle(this.textarea.style,
"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",w.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(a.cell,b);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};
mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var b=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return b="1"==mxUtils.getValue(a.style,"nl2Br","1")?b.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):b.replace(/\r\n/g,"").replace(/\n/g,"")};var t=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&
-this.toggleViewMode();t.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(G){}};var x=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{x.apply(this,arguments),""==b&&this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)&&this.graph.isTransparentState(a)&&this.graph.removeCells([a.cell],!1)}finally{this.graph.getModel().endUpdate()}};
+this.toggleViewMode();t.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(G){}};var y=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,b){this.graph.getModel().beginUpdate();try{y.apply(this,arguments),""==b&&this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)&&this.graph.isTransparentState(a)&&this.graph.removeCells([a.cell],!1)}finally{this.graph.getModel().endUpdate()}};
mxCellEditor.prototype.getBackgroundColor=function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=b&&b!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(b=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;
return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(a,b){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(b.getEvent)};mxGraphView.prototype.formatUnitText=function(a){return a?c(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(b){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=
a(),this.graph.container.appendChild(this.hint));var d=this.graph.view.translate,e=this.graph.view.scale;b=this.roundLength((this.bounds.x+this.currentDx)/e-d.x);d=this.roundLength((this.bounds.y+this.currentDy)/e-d.y);e=this.graph.view.unit;this.hint.innerHTML=c(b,e)+", "+c(d,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=
-function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var y=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(a,b){y.apply(this,arguments);var c=this.graph.getCellStyle(a);if(null==c.childLayout){var d=this.graph.model.getParent(a),e=null!=d?this.graph.getCellGeometry(d):null;null!=e&&(c=this.graph.getCellStyle(d),"stackLayout"==c.childLayout&&(c="1"==mxUtils.getValue(c,"horizontalStack","1"),e=e.clone(),c?e.height=b.height:e.width=
+function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var x=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(a,b){x.apply(this,arguments);var c=this.graph.getCellStyle(a);if(null==c.childLayout){var d=this.graph.model.getParent(a),e=null!=d?this.graph.getCellGeometry(d):null;null!=e&&(c=this.graph.getCellStyle(d),"stackLayout"==c.childLayout&&(c="1"==mxUtils.getValue(c,"horizontalStack","1"),e=e.clone(),c?e.height=b.height:e.width=
b.width,this.graph.model.setGeometry(d,e)))}};var B=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function a(a){c.get(a)||(c.put(a,!0),e.push(a))}for(var b=B.apply(this,arguments),c=new mxDictionary,d=this.graph.model,e=[],f=0;f<b.length;f++){var g=b[f];this.graph.isTableCell(g)?a(d.getParent(d.getParent(g))):this.graph.isTableRow(g)&&a(d.getParent(g));a(g)}return e};var A=mxVertexHandler.prototype.createParentHighlightShape;
mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=A.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var C=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(a){var b=C.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+
this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return this.graph.isRecursiveVertexResize(a)&&!mxEvent.isControlDown(b.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,
@@ -2981,9 +2982,9 @@ g.setAttribute("border","0"),g.setAttribute("src",Dialog.prototype.closeImage),g
(mxUtils.write(b,mxResources.get("text")),d.appendChild(b),this.panels.push(new TextFormatPanel(this,a,d))):(b.style.backgroundColor=this.inactiveTabBackgroundColor,b.style.borderLeftWidth="1px",b.style.cursor="pointer",b.style.width=f?"50%":"33.3%",n=b.cloneNode(!1),l=n.cloneNode(!1),n.style.backgroundColor=this.inactiveTabBackgroundColor,l.style.backgroundColor=this.inactiveTabBackgroundColor,f?n.style.borderLeftWidth="0px":(b.style.borderLeftWidth="0px",mxUtils.write(b,mxResources.get("style")),
d.appendChild(b),m=d.cloneNode(!1),m.style.display="none",this.panels.push(new StyleFormatPanel(this,a,m)),this.container.appendChild(m),g(b,m,k++)),mxUtils.write(n,mxResources.get("text")),d.appendChild(n),b=d.cloneNode(!1),b.style.display="none",this.panels.push(new TextFormatPanel(this,a,b)),this.container.appendChild(b),mxUtils.write(l,mxResources.get("arrange")),d.appendChild(l),d=d.cloneNode(!1),d.style.display="none",this.panels.push(new ArrangePanel(this,a,d)),this.container.appendChild(d),
g(n,b,k++),g(l,d,k++))}};BaseFormatPanel=function(a,c,d){this.format=a;this.editorUi=c;this.container=d;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";BaseFormatPanel.prototype.getSelectionState=function(){for(var a=this.editorUi.editor.graph,c=a.getSelectionCells(),d=null,b=0;b<c.length;b++){var f=a.view.getState(c[b]);if(null!=f&&(f=mxUtils.getValue(f.style,mxConstants.STYLE_SHAPE,null),null!=f))if(null==d)d=f;else if(d!=f)return null}return d};
-BaseFormatPanel.prototype.installInputHandler=function(a,c,d,b,f,e,h,g){e=null!=e?e:"";g=null!=g?g:!1;var k=this.editorUi,l=k.editor.graph;b=null!=b?b:1;f=null!=f?f:999;var n=null,m=!1,p=mxUtils.bind(this,function(p){var q=g?parseFloat(a.value):parseInt(a.value);isNaN(q)||c!=mxConstants.STYLE_ROTATION||(q=mxUtils.mod(Math.round(100*q),36E3)/100);q=Math.min(f,Math.max(b,isNaN(q)?d:q));if(l.cellEditor.isContentEditing()&&h)m||(m=!0,null!=n&&(l.cellEditor.restoreSelection(n),n=null),h(q),a.value=q+e,
-m=!1);else if(q!=mxUtils.getValue(this.format.getSelectionState().style,c,d)){l.isEditing()&&l.stopEditing(!0);l.getModel().beginUpdate();try{var u=l.getSelectionCells();l.setCellStyles(c,q,u);c==mxConstants.STYLE_FONTSIZE&&l.updateLabelElements(l.getSelectionCells(),function(a){a.style.fontSize=q+"px";a.removeAttribute("size")});for(var r=0;r<u.length;r++)0==l.model.getChildCount(u[r])&&l.autoSizeCell(u[r],!1);k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[q],"cells",u))}finally{l.getModel().endUpdate()}}a.value=
-q+e;mxEvent.consume(p)});h&&l.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==l.cellEditor.textarea&&(n=l.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==l.cellEditor.textarea&&(n=l.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",p);mxEvent.addListener(a,"blur",p);return p};
+BaseFormatPanel.prototype.installInputHandler=function(a,c,d,b,f,e,h,g){e=null!=e?e:"";g=null!=g?g:!1;var k=this.editorUi,l=k.editor.graph;b=null!=b?b:1;f=null!=f?f:999;var n=null,m=!1,p=mxUtils.bind(this,function(p){var r=g?parseFloat(a.value):parseInt(a.value);isNaN(r)||c!=mxConstants.STYLE_ROTATION||(r=mxUtils.mod(Math.round(100*r),36E3)/100);r=Math.min(f,Math.max(b,isNaN(r)?d:r));if(l.cellEditor.isContentEditing()&&h)m||(m=!0,null!=n&&(l.cellEditor.restoreSelection(n),n=null),h(r),a.value=r+e,
+m=!1);else if(r!=mxUtils.getValue(this.format.getSelectionState().style,c,d)){l.isEditing()&&l.stopEditing(!0);l.getModel().beginUpdate();try{var u=l.getSelectionCells();l.setCellStyles(c,r,u);c==mxConstants.STYLE_FONTSIZE&&l.updateLabelElements(l.getSelectionCells(),function(a){a.style.fontSize=r+"px";a.removeAttribute("size")});for(var q=0;q<u.length;q++)0==l.model.getChildCount(u[q])&&l.autoSizeCell(u[q],!1);k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[r],"cells",u))}finally{l.getModel().endUpdate()}}a.value=
+r+e;mxEvent.consume(p)});h&&l.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==l.cellEditor.textarea&&(n=l.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==l.cellEditor.textarea&&(n=l.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",p);mxEvent.addListener(a,"blur",p);return p};
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 18px";return a};BaseFormatPanel.prototype.createTitle=function(a){var c=document.createElement("div");c.style.padding="0px 0px 6px 0px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.width="200px";c.style.fontWeight="bold";mxUtils.write(c,a);return c};
BaseFormatPanel.prototype.createStepper=function(a,c,d,b,f,e,h){d=null!=d?d:1;b=null!=b?b:8;if(mxClient.IS_QUIRKS)b-=2;else if(mxClient.IS_MT||8<=document.documentMode)b+=1;var g=document.createElement("div");mxUtils.setPrefixedStyle(g.style,"borderRadius","3px");g.style.border="1px solid rgb(192, 192, 192)";g.style.position="absolute";var k=document.createElement("div");k.style.borderBottom="1px solid rgb(192, 192, 192)";k.style.position="relative";k.style.height=b+"px";k.style.width="10px";k.className=
"geBtnUp";g.appendChild(k);var l=k.cloneNode(!1);l.style.border="none";l.style.height=b+"px";l.className="geBtnDown";g.appendChild(l);mxEvent.addListener(l,"click",function(b){""==a.value&&(a.value=e||"2");var f=h?parseFloat(a.value):parseInt(a.value);isNaN(f)||(a.value=f-d,null!=c&&c(b));mxEvent.consume(b)});mxEvent.addListener(k,"click",function(b){""==a.value&&(a.value=e||"0");var f=h?parseFloat(a.value):parseInt(a.value);isNaN(f)||(a.value=f+d,null!=c&&c(b));mxEvent.consume(b)});if(f){var n=null;
@@ -3036,42 +3037,42 @@ a=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)),e.value=isN
BaseFormatPanel.prototype.inUnit=function(a){return this.editorUi.editor.graph.view.formatUnitText(a)};BaseFormatPanel.prototype.fromUnit=function(a){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return a;case mxConstants.INCHES:return a*mxConstants.PIXELS_PER_INCH;case mxConstants.MILLIMETERS:return a*mxConstants.PIXELS_PER_MM}};BaseFormatPanel.prototype.isFloatUnit=function(){return this.editorUi.editor.graph.view.unit!=mxConstants.POINTS};
BaseFormatPanel.prototype.getUnitStep=function(){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return 1;case mxConstants.INCHES:return.1;case mxConstants.MILLIMETERS:return.5}};
ArrangePanel.prototype.addGeometry=function(a){var c=this,d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createPanel();e.style.paddingBottom="8px";var h=document.createElement("div");h.style.position="absolute";h.style.width="50px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("size"));e.appendChild(h);var g,k,l,n,m=this.addUnitInput(e,this.getUnit(),84,44,function(){g.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
-p=this.addUnitInput(e,this.getUnit(),20,44,function(){k.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),u=document.createElement("div");u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");u.style.position="relative";u.style.cursor="pointer";u.style.marginTop="-3px";u.style.border="0px";u.style.left="52px";mxUtils.setOpacity(u,50);mxEvent.addListener(u,"mouseenter",function(){mxUtils.setOpacity(u,
-100)});mxEvent.addListener(u,"mouseleave",function(){mxUtils.setOpacity(u,50)});mxEvent.addListener(u,"click",function(){d.actions.get("autosize").funct()});e.appendChild(u);f.row?(m.style.visibility="hidden",m.nextSibling.style.visibility="hidden"):this.addLabel(e,mxResources.get("width"),84);this.addLabel(e,mxResources.get("height"),20);mxUtils.br(e);h=document.createElement("div");h.style.paddingTop="8px";h.style.paddingRight="20px";h.style.whiteSpace="nowrap";h.style.textAlign="right";var q=this.createCellOption(mxResources.get("constrainProportions"),
-mxConstants.STYLE_ASPECT,null,"fixed","null");q.style.width="100%";h.appendChild(q);f.cell||f.row?u.style.visibility="hidden":e.appendChild(h);var v=q.getElementsByTagName("input")[0];this.addKeyHandler(m,x);this.addKeyHandler(p,x);g=this.addGeometryHandler(m,function(a,d,e){if(b.isTableCell(e))return b.setTableColumnWidth(e,d-a.width,!0),!0;0<a.width&&(d=Math.max(1,c.fromUnit(d)),v.checked&&(a.height=Math.round(a.height*d*100/a.width)/100),a.width=d)});k=this.addGeometryHandler(p,function(a,d,e){b.isTableCell(e)&&
-(e=b.model.getParent(e));if(b.isTableRow(e))return b.setTableRowHeight(e,d-a.height),!0;0<a.height&&(d=Math.max(1,c.fromUnit(d)),v.checked&&(a.width=Math.round(a.width*d*100/a.height)/100),a.height=d)});(f.resizable||f.row||f.cell)&&a.appendChild(e);var r=this.createPanel();r.style.paddingBottom="30px";h=document.createElement("div");h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("position"));r.appendChild(h);var w=
-this.addUnitInput(r,this.getUnit(),84,44,function(){l.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),t=this.addUnitInput(r,this.getUnit(),20,44,function(){n.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(r);this.addLabel(r,mxResources.get("left"),84);this.addLabel(r,mxResources.get("top"),20);var x=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();if(f.containsLabel||f.vertices.length!=b.getSelectionCount()||null==f.width||
-null==f.height)e.style.display="none";else{e.style.display="";if(d||document.activeElement!=m)m.value=this.inUnit(f.width)+(""==f.width?"":" "+this.getUnit());if(d||document.activeElement!=p)p.value=this.inUnit(f.height)+(""==f.height?"":" "+this.getUnit())}if(f.vertices.length==b.getSelectionCount()&&null!=f.x&&null!=f.y){r.style.display="";if(d||document.activeElement!=w)w.value=this.inUnit(f.x)+(""==f.x?"":" "+this.getUnit());if(d||document.activeElement!=t)t.value=this.inUnit(f.y)+(""==f.y?"":
-" "+this.getUnit())}else r.style.display="none"});this.addKeyHandler(w,x);this.addKeyHandler(t,x);b.getModel().addListener(mxEvent.CHANGE,x);this.listeners.push({destroy:function(){b.getModel().removeListener(x)}});x();l=this.addGeometryHandler(w,function(a,b){b=c.fromUnit(b);a.relative?a.offset.x=b:a.x=b});n=this.addGeometryHandler(t,function(a,b){b=c.fromUnit(b);a.relative?a.offset.y=b:a.y=b});f.movable&&a.appendChild(r)};
+p=this.addUnitInput(e,this.getUnit(),20,44,function(){k.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),u=document.createElement("div");u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");u.style.position="relative";u.style.cursor="pointer";u.style.marginTop="-3px";u.style.border="0px";u.style.left="42px";mxUtils.setOpacity(u,50);mxEvent.addListener(u,"mouseenter",function(){mxUtils.setOpacity(u,
+100)});mxEvent.addListener(u,"mouseleave",function(){mxUtils.setOpacity(u,50)});mxEvent.addListener(u,"click",function(){d.actions.get("autosize").funct()});e.appendChild(u);f.row?(m.style.visibility="hidden",m.nextSibling.style.visibility="hidden"):this.addLabel(e,mxResources.get("width"),84);this.addLabel(e,mxResources.get("height"),20);mxUtils.br(e);h=document.createElement("div");h.style.paddingTop="8px";h.style.paddingRight="20px";h.style.whiteSpace="nowrap";h.style.textAlign="right";var r=this.createCellOption(mxResources.get("constrainProportions"),
+mxConstants.STYLE_ASPECT,null,"fixed","null");r.style.width="100%";h.appendChild(r);f.cell||f.row?u.style.visibility="hidden":e.appendChild(h);var v=r.getElementsByTagName("input")[0];this.addKeyHandler(m,y);this.addKeyHandler(p,y);g=this.addGeometryHandler(m,function(a,d,e){if(b.isTableCell(e))return b.setTableColumnWidth(e,d-a.width,!0),!0;0<a.width&&(d=Math.max(1,c.fromUnit(d)),v.checked&&(a.height=Math.round(a.height*d*100/a.width)/100),a.width=d)});k=this.addGeometryHandler(p,function(a,d,e){b.isTableCell(e)&&
+(e=b.model.getParent(e));if(b.isTableRow(e))return b.setTableRowHeight(e,d-a.height),!0;0<a.height&&(d=Math.max(1,c.fromUnit(d)),v.checked&&(a.width=Math.round(a.width*d*100/a.height)/100),a.height=d)});(f.resizable||f.row||f.cell)&&a.appendChild(e);var q=this.createPanel();q.style.paddingBottom="30px";h=document.createElement("div");h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("position"));q.appendChild(h);var w=
+this.addUnitInput(q,this.getUnit(),84,44,function(){l.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),t=this.addUnitInput(q,this.getUnit(),20,44,function(){n.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(q);this.addLabel(q,mxResources.get("left"),84);this.addLabel(q,mxResources.get("top"),20);var y=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();if(f.containsLabel||f.vertices.length!=b.getSelectionCount()||null==f.width||
+null==f.height)e.style.display="none";else{e.style.display="";if(d||document.activeElement!=m)m.value=this.inUnit(f.width)+(""==f.width?"":" "+this.getUnit());if(d||document.activeElement!=p)p.value=this.inUnit(f.height)+(""==f.height?"":" "+this.getUnit())}if(f.vertices.length==b.getSelectionCount()&&null!=f.x&&null!=f.y){q.style.display="";if(d||document.activeElement!=w)w.value=this.inUnit(f.x)+(""==f.x?"":" "+this.getUnit());if(d||document.activeElement!=t)t.value=this.inUnit(f.y)+(""==f.y?"":
+" "+this.getUnit())}else q.style.display="none"});this.addKeyHandler(w,y);this.addKeyHandler(t,y);b.getModel().addListener(mxEvent.CHANGE,y);this.listeners.push({destroy:function(){b.getModel().removeListener(y)}});y();l=this.addGeometryHandler(w,function(a,b){b=c.fromUnit(b);a.relative?a.offset.x=b:a.x=b});n=this.addGeometryHandler(t,function(a,b){b=c.fromUnit(b);a.relative?a.offset.y=b:a.y=b});f.movable&&a.appendChild(q)};
ArrangePanel.prototype.addGeometryHandler=function(a,c){function d(d){if(""!=a.value){var g=parseFloat(a.value);if(isNaN(g))a.value=f+" "+e.getUnit();else if(g!=f){b.getModel().beginUpdate();try{for(var h=b.getSelectionCells(),l=0;l<h.length;l++)if(b.getModel().isVertex(h[l])){var n=b.getCellGeometry(h[l]);if(null!=n&&(n=n.clone(),!c(n,g,h[l]))){var m=b.view.getState(h[l]);null!=m&&b.isRecursiveVertexResize(m)&&b.resizeChildCells(h[l],n);b.getModel().setGeometry(h[l],n);b.constrainChildCells(h[l])}}}finally{b.getModel().endUpdate()}f=
g;a.value=g+" "+e.getUnit()}}mxEvent.consume(d)}var b=this.editorUi.editor.graph,f=null,e=this;mxEvent.addListener(a,"blur",d);mxEvent.addListener(a,"change",d);mxEvent.addListener(a,"focus",function(){f=a.value});return d};
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,c){function d(d){if(""!=a.value){var e=parseFloat(a.value);if(isNaN(e))a.value=f+" pt";else if(e!=f){b.getModel().beginUpdate();try{for(var g=b.getSelectionCells(),k=0;k<g.length;k++)if(b.getModel().isEdge(g[k])){var l=b.getCellGeometry(g[k]);null!=l&&(l=l.clone(),c(l,e),b.getModel().setGeometry(g[k],l))}}finally{b.getModel().endUpdate()}f=e;a.value=e+" pt"}}mxEvent.consume(d)}var b=this.editorUi.editor.graph,f=null;mxEvent.addListener(a,"blur",
d);mxEvent.addListener(a,"change",d);mxEvent.addListener(a,"focus",function(){f=a.value});return d};
ArrangePanel.prototype.addEdgeGeometry=function(a){function c(a){var c=parseInt(m.value),c=Math.min(999,Math.max(1,isNaN(c)?1:c));c!=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)&&(b.setCellStyles("width",c,b.getSelectionCells()),d.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[c],"cells",b.getSelectionCells())));m.value=c+" pt";mxEvent.consume(a)}var d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createPanel(),
h=document.createElement("div");h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("width"));e.appendChild(h);var g,k,l,n,m=this.addUnitInput(e,"pt",20,44,function(){c.apply(this,arguments)});mxUtils.br(e);this.addKeyHandler(m,t);mxEvent.addListener(m,"blur",c);mxEvent.addListener(m,"change",c);a.appendChild(e);var p=this.createPanel();p.style.paddingBottom="30px";h=document.createElement("div");h.style.position="absolute";
-h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"Start");p.appendChild(h);var u=this.addUnitInput(p,"pt",84,44,function(){l.apply(this,arguments)}),q=this.addUnitInput(p,"pt",20,44,function(){n.apply(this,arguments)});mxUtils.br(p);this.addLabel(p,mxResources.get("left"),84);this.addLabel(p,mxResources.get("top"),20);a.appendChild(p);this.addKeyHandler(u,t);this.addKeyHandler(q,t);var v=this.createPanel();v.style.paddingBottom="30px";h=document.createElement("div");
-h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"End");v.appendChild(h);var r=this.addUnitInput(v,"pt",84,44,function(){g.apply(this,arguments)}),w=this.addUnitInput(v,"pt",20,44,function(){k.apply(this,arguments)});mxUtils.br(v);this.addLabel(v,mxResources.get("left"),84);this.addLabel(v,mxResources.get("top"),20);a.appendChild(v);this.addKeyHandler(r,t);this.addKeyHandler(w,t);var t=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();
-a=b.getSelectionCell();if("link"==f.style.shape||"flexArrow"==f.style.shape){if(e.style.display="",d||document.activeElement!=m)d=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),m.value=d+" pt"}else e.style.display="none";1==b.getSelectionCount()&&b.model.isEdge(a)?(d=b.model.getGeometry(a),null!=d.sourcePoint&&null==b.model.getTerminal(a,!0)?(u.value=d.sourcePoint.x,q.value=d.sourcePoint.y):p.style.display="none",null!=d.targetPoint&&null==b.model.getTerminal(a,
-!1)?(r.value=d.targetPoint.x,w.value=d.targetPoint.y):v.style.display="none"):(p.style.display="none",v.style.display="none")});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.x=b});n=this.addEdgeGeometryHandler(q,function(a,b){a.sourcePoint.y=b});g=this.addEdgeGeometryHandler(r,function(a,b){a.targetPoint.x=b});k=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});b.getModel().addListener(mxEvent.CHANGE,t);this.listeners.push({destroy:function(){b.getModel().removeListener(t)}});
+h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"Start");p.appendChild(h);var u=this.addUnitInput(p,"pt",84,44,function(){l.apply(this,arguments)}),r=this.addUnitInput(p,"pt",20,44,function(){n.apply(this,arguments)});mxUtils.br(p);this.addLabel(p,mxResources.get("left"),84);this.addLabel(p,mxResources.get("top"),20);a.appendChild(p);this.addKeyHandler(u,t);this.addKeyHandler(r,t);var v=this.createPanel();v.style.paddingBottom="30px";h=document.createElement("div");
+h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"End");v.appendChild(h);var q=this.addUnitInput(v,"pt",84,44,function(){g.apply(this,arguments)}),w=this.addUnitInput(v,"pt",20,44,function(){k.apply(this,arguments)});mxUtils.br(v);this.addLabel(v,mxResources.get("left"),84);this.addLabel(v,mxResources.get("top"),20);a.appendChild(v);this.addKeyHandler(q,t);this.addKeyHandler(w,t);var t=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();
+a=b.getSelectionCell();if("link"==f.style.shape||"flexArrow"==f.style.shape){if(e.style.display="",d||document.activeElement!=m)d=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),m.value=d+" pt"}else e.style.display="none";1==b.getSelectionCount()&&b.model.isEdge(a)?(d=b.model.getGeometry(a),null!=d.sourcePoint&&null==b.model.getTerminal(a,!0)?(u.value=d.sourcePoint.x,r.value=d.sourcePoint.y):p.style.display="none",null!=d.targetPoint&&null==b.model.getTerminal(a,
+!1)?(q.value=d.targetPoint.x,w.value=d.targetPoint.y):v.style.display="none"):(p.style.display="none",v.style.display="none")});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.x=b});n=this.addEdgeGeometryHandler(r,function(a,b){a.sourcePoint.y=b});g=this.addEdgeGeometryHandler(q,function(a,b){a.targetPoint.x=b});k=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});b.getModel().addListener(mxEvent.CHANGE,t);this.listeners.push({destroy:function(){b.getModel().removeListener(t)}});
t()};TextFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
TextFormatPanel.prototype.addFont=function(a){function c(a,b){mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?a.style.filter=b?"progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#c5ecff', EndColorStr='#87d4fb', GradientType=0)":"":a.style.backgroundImage=b?"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createTitle(mxResources.get("font"));e.style.paddingLeft="18px";e.style.paddingTop="10px";e.style.paddingBottom=
"6px";a.appendChild(e);e=this.createPanel();e.style.paddingTop="2px";e.style.paddingBottom="2px";e.style.position="relative";e.style.marginLeft="-2px";e.style.borderWidth="0px";e.className="geToolbarContainer";mxClient.IS_QUIRKS&&(e.style.display="block");if(b.cellEditor.isContentEditing()){var h=e.cloneNode(),g=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",h,null,!0);g.style.color="rgb(112, 112, 112)";g.style.whiteSpace="nowrap";g.style.overflow=
"hidden";g.style.margin="0px";this.addArrow(g);g.style.width="192px";g.style.height="15px";g=g.getElementsByTagName("div")[0];g.style.cssFloat="right";a.appendChild(h)}a.appendChild(e);h=this.createPanel();h.style.marginTop="8px";h.style.borderTop="1px solid #c0c0c0";h.style.paddingTop="6px";h.style.paddingBottom="6px";var k=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",e,null,!0);k.style.color="rgb(112, 112, 112)";k.style.whiteSpace="nowrap";k.style.overflow=
"hidden";k.style.margin="0px";this.addArrow(k);k.style.width="192px";k.style.height="15px";g=e.cloneNode(!1);g.style.marginLeft="-3px";var l=this.editorUi.toolbar.addItems(["bold","italic","underline"],g,!0);l[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");l[1].setAttribute("title",mxResources.get("italic")+" ("+this.editorUi.actions.get("italic").shortcut+")");l[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+
")");var n=this.editorUi.toolbar.addItems(["vertical"],g,!0)[0];mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);this.styleButtons(l);this.styleButtons([n]);var m=e.cloneNode(!1);m.style.marginLeft="-3px";m.style.paddingBottom="0px";var p=function(a){return function(){return a()}},u=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),b.cellEditor.isContentEditing()?function(a){b.cellEditor.alignText(mxConstants.ALIGN_LEFT,a)}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],
-[mxConstants.ALIGN_LEFT])),m),q=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(a){b.cellEditor.alignText(mxConstants.ALIGN_CENTER,a)}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),m),v=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),b.cellEditor.isContentEditing()?function(a){b.cellEditor.alignText(mxConstants.ALIGN_RIGHT,a)}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],
-[mxConstants.ALIGN_RIGHT])),m);this.styleButtons([u,q,v]);if(b.cellEditor.isContentEditing()){var r=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},g);this.styleButtons([r]);r.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
-r.firstChild.style.backgroundPosition="2px 2px";r.firstChild.style.backgroundSize="18px 18px";this.styleButtons([r])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),m),t=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),m),x=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),m);this.styleButtons([w,t,x]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(m);var y,B,A,C,z,E,I;b.cellEditor.isContentEditing()?(w.style.display="none",t.style.display="none",x.style.display="none",n.style.display="none",A=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==A.style.opacity&&document.execCommand("justifyfull",
-!1,null)},m),A.style.marginRight="9px",A.style.opacity=1,this.styleButtons([A,y=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},m),B=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},m)]),y.style.marginLeft="9px",p=m.cloneNode(!1),p.style.paddingTop="4px",m=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
+[mxConstants.ALIGN_LEFT])),m),r=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(a){b.cellEditor.alignText(mxConstants.ALIGN_CENTER,a)}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),m),v=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),b.cellEditor.isContentEditing()?function(a){b.cellEditor.alignText(mxConstants.ALIGN_RIGHT,a)}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],
+[mxConstants.ALIGN_RIGHT])),m);this.styleButtons([u,r,v]);if(b.cellEditor.isContentEditing()){var q=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},g);this.styleButtons([q]);q.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
+q.firstChild.style.backgroundPosition="2px 2px";q.firstChild.style.backgroundSize="18px 18px";this.styleButtons([q])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),m),t=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),m),y=this.editorUi.toolbar.addButton("geSprite-bottom",
+mxResources.get("bottom"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),m);this.styleButtons([w,t,y]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(m);var x,B,A,C,z,E,I;b.cellEditor.isContentEditing()?(w.style.display="none",t.style.display="none",y.style.display="none",n.style.display="none",A=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==A.style.opacity&&document.execCommand("justifyfull",
+!1,null)},m),A.style.marginRight="9px",A.style.opacity=1,this.styleButtons([A,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},m),B=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},m)]),x.style.marginLeft="9px",p=m.cloneNode(!1),p.style.paddingTop="4px",m=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
!1,null)},p),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},p)],this.styleButtons(m),m[m.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),p.style.height="40"),a.appendChild(p)):(l[2].style.marginRight="9px",v.style.marginRight="9px");m=e.cloneNode(!1);m.style.marginLeft=
-"0px";m.style.paddingTop="8px";m.style.paddingBottom="4px";m.style.fontWeight="normal";mxUtils.write(m,mxResources.get("position"));var H=document.createElement("select");H.style.position="absolute";H.style.right="20px";H.style.width="97px";H.style.marginTop="-2px";for(var r="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),N={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP,
+"0px";m.style.paddingTop="8px";m.style.paddingBottom="4px";m.style.fontWeight="normal";mxUtils.write(m,mxResources.get("position"));var H=document.createElement("select");H.style.position="absolute";H.style.right="20px";H.style.width="97px";H.style.marginTop="-2px";for(var q="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),N={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP,
mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM],topRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM],left:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE],center:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_MIDDLE],right:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_MIDDLE],bottomLeft:[mxConstants.ALIGN_LEFT,
-mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP],bottom:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},p=0;p<r.length;p++){var F=document.createElement("option");F.setAttribute("value",r[p]);mxUtils.write(F,mxResources.get(r[p]));H.appendChild(F)}m.appendChild(H);r=e.cloneNode(!1);r.style.marginLeft="0px";r.style.paddingTop=
-"4px";r.style.paddingBottom="4px";r.style.fontWeight="normal";mxUtils.write(r,mxResources.get("writingDirection"));var K=document.createElement("select");K.style.position="absolute";K.style.right="20px";K.style.width="97px";K.style.marginTop="-2px";for(var F=["automatic","leftToRight","rightToLeft"],U={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},p=0;p<F.length;p++){var T=document.createElement("option");T.setAttribute("value",F[p]);mxUtils.write(T,
-mxResources.get(F[p]));K.appendChild(T)}r.appendChild(K);b.isEditing()||(a.appendChild(m),mxEvent.addListener(H,"change",function(a){b.getModel().beginUpdate();try{var c=N[H.value];null!=c&&(b.setCellStyles(mxConstants.STYLE_LABEL_POSITION,c[0],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,c[1],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_ALIGN,c[2],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,c[3],b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)}),
-a.appendChild(r),mxEvent.addListener(K,"change",function(a){b.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,U[K.value],b.getSelectionCells());mxEvent.consume(a)}));var O=document.createElement("input");O.style.textAlign="right";O.style.marginTop="4px";mxClient.IS_QUIRKS||(O.style.position="absolute",O.style.right="32px");O.style.width="46px";O.style.height=mxClient.IS_QUIRKS?"21px":"17px";g.appendChild(O);var M=null,m=this.installInputHandler(O,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,
+mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP],bottom:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},p=0;p<q.length;p++){var F=document.createElement("option");F.setAttribute("value",q[p]);mxUtils.write(F,mxResources.get(q[p]));H.appendChild(F)}m.appendChild(H);q=e.cloneNode(!1);q.style.marginLeft="0px";q.style.paddingTop=
+"4px";q.style.paddingBottom="4px";q.style.fontWeight="normal";mxUtils.write(q,mxResources.get("writingDirection"));var K=document.createElement("select");K.style.position="absolute";K.style.right="20px";K.style.width="97px";K.style.marginTop="-2px";for(var F=["automatic","leftToRight","rightToLeft"],U={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},p=0;p<F.length;p++){var T=document.createElement("option");T.setAttribute("value",F[p]);mxUtils.write(T,
+mxResources.get(F[p]));K.appendChild(T)}q.appendChild(K);b.isEditing()||(a.appendChild(m),mxEvent.addListener(H,"change",function(a){b.getModel().beginUpdate();try{var c=N[H.value];null!=c&&(b.setCellStyles(mxConstants.STYLE_LABEL_POSITION,c[0],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,c[1],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_ALIGN,c[2],b.getSelectionCells()),b.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,c[3],b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)}),
+a.appendChild(q),mxEvent.addListener(K,"change",function(a){b.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,U[K.value],b.getSelectionCells());mxEvent.consume(a)}));var O=document.createElement("input");O.style.textAlign="right";O.style.marginTop="4px";mxClient.IS_QUIRKS||(O.style.position="absolute",O.style.right="32px");O.style.width="40px";O.style.height=mxClient.IS_QUIRKS?"21px":"17px";g.appendChild(O);var M=null,m=this.installInputHandler(O,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,
1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var c=function(c,e){null!=b.cellEditor.textarea&&c!=b.cellEditor.textarea&&b.cellEditor.textarea.contains(c)&&(e||d.containsNode(c,!0))&&("FONT"==c.nodeName?(c.removeAttribute("size"),c.style.fontSize=a+"px"):mxUtils.getCurrentStyle(c).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(c.parentNode).fontSize!=a+"px"?c.style.fontSize=a+"px":c.style.fontSize=""))},d=window.getSelection(),e=0<d.rangeCount?d.getRangeAt(0).commonAncestorContainer:
b.cellEditor.textarea;e!=b.cellEditor.textarea&&e.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");e!=b.cellEditor.textarea&&(e=e.parentNode);if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var f=e.getElementsByTagName("*");c(e);for(e=0;e<f.length;e++)c(f[e])}O.value=a+" pt"}else if(window.getSelection||document.selection)if(c=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},f=null,document.selection?f=document.selection.createRange().parentElement():
(d=window.getSelection(),0<d.rangeCount&&(f=d.getRangeAt(0).commonAncestorContainer)),null!=f&&c(b.cellEditor.textarea,f))for(M=a,document.execCommand("fontSize",!1,"4"),f=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<f.length;e++)if("4"==f[e].getAttribute("size")){f[e].removeAttribute("size");f[e].style.fontSize=M+"px";window.setTimeout(function(){O.value=M+" pt";M=null},0);break}},!0),m=this.createStepper(O,m,1,10,!0,Menus.prototype.defaultFontSize);m.style.display=O.style.display;m.style.marginTop=
@@ -3095,17 +3096,17 @@ mxResources.get("backgroundColor"),mxUtils.bind(this,function(a){if(null!=z){var
c==mxConstants.NONE?"":c})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=z){var a=z.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?z.setAttribute("cellPadding",a):z.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=
z&&z.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=z&&z.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=z&&z.setAttribute("align","right")},e)];this.styleButtons(m);m[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);C=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),
mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(g);var S=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(l[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(l[1],(a&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);c(l[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);k.firstChild.nodeValue=mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);c(n,"0"==mxUtils.getValue(f.style,
-mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=O)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),O.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);c(u,a==mxConstants.ALIGN_LEFT);c(q,a==mxConstants.ALIGN_CENTER);c(v,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(t,a==mxConstants.ALIGN_MIDDLE);
-c(x,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);H.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?"topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&
+mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=O)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),O.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);c(u,a==mxConstants.ALIGN_LEFT);c(r,a==mxConstants.ALIGN_CENTER);c(v,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(t,a==mxConstants.ALIGN_MIDDLE);
+c(y,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);H.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?"topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&
b==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(f.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);a==mxConstants.TEXT_DIRECTION_RTL?K.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?K.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(K.value="automatic");if(d||document.activeElement!=R)a=parseFloat(mxUtils.getValue(f.style,
mxConstants.STYLE_SPACING,2)),R.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=V)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),V.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=la)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_RIGHT,0)),la.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=aa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),aa.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ka)a=parseFloat(mxUtils.getValue(f.style,
mxConstants.STYLE_SPACING_LEFT,0)),ka.value=isNaN(a)?"":a+" pt"});ea=this.installInputHandler(R,mxConstants.STYLE_SPACING,2,-999,999," pt");da=this.installInputHandler(V,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");oa=this.installInputHandler(la,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");Z=this.installInputHandler(aa,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");X=this.installInputHandler(ka,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(O,S);this.addKeyHandler(R,
S);this.addKeyHandler(V,S);this.addKeyHandler(la,S);this.addKeyHandler(aa,S);this.addKeyHandler(ka,S);b.getModel().addListener(mxEvent.CHANGE,S);this.listeners.push({destroy:function(){b.getModel().removeListener(S)}});S();if(b.cellEditor.isContentEditing()){var G=!1,e=function(){G||(G=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+
1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a=null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},h=function(a,b,c){return null!=c.style&&null!=b?(b=b.lineHeight,null!=c.style.lineHeight&&"%"==c.style.lineHeight.substring(c.style.lineHeight.length-
-1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""};a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild);var m=mxUtils.getCurrentStyle(a),n=g(m),p=h(n,m,a),t=a.getElementsByTagName("*");if(0<t.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var r=window.getSelection(),w=0;w<t.length;w++)if(r.containsNode(t[w],
-!0)){temp=mxUtils.getCurrentStyle(t[w]);var n=Math.max(g(temp),n),x=h(n,temp,t[w]);if(x!=p||isNaN(x))p=""}null!=m&&(c(l[0],"bold"==m.fontWeight||400<m.fontWeight||e("B")||e("STRONG")),c(l[1],"italic"==m.fontStyle||e("I")||e("EM")),c(l[2],e("U")),c(B,e("SUP")),c(y,e("SUB")),b.cellEditor.isTableSelected()?(c(A,d(m.textAlign,"justify")),c(u,d(m.textAlign,"left")),c(q,d(m.textAlign,"center")),c(v,d(m.textAlign,"right"))):(e=b.cellEditor.align||mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),
-d(m.textAlign,"justify")?(c(A,d(m.textAlign,"justify")),c(u,!1),c(q,!1),c(v,!1)):(c(A,!1),c(u,e==mxConstants.ALIGN_LEFT),c(q,e==mxConstants.ALIGN_CENTER),c(v,e==mxConstants.ALIGN_RIGHT))),z=b.getParentByName(a,"TABLE",b.cellEditor.textarea),I=null==z?null:b.getParentByName(a,"TR",z),E=null==z?null:b.getParentByNames(a,["TD","TH"],z),C.style.display=null!=z?"":"none",document.activeElement!=O&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=M?(a.removeAttribute("size"),a.style.fontSize=M+" pt",
-M=null):O.value=isNaN(n)?"":n+" pt",x=parseFloat(p),isNaN(x)?ba.value="100 %":ba.value=Math.round(100*x)+" %"),d=m.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),n=m.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+
+1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""};a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild);var m=mxUtils.getCurrentStyle(a),n=g(m),p=h(n,m,a),t=a.getElementsByTagName("*");if(0<t.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var q=window.getSelection(),w=0;w<t.length;w++)if(q.containsNode(t[w],
+!0)){temp=mxUtils.getCurrentStyle(t[w]);var n=Math.max(g(temp),n),y=h(n,temp,t[w]);if(y!=p||isNaN(y))p=""}null!=m&&(c(l[0],"bold"==m.fontWeight||400<m.fontWeight||e("B")||e("STRONG")),c(l[1],"italic"==m.fontStyle||e("I")||e("EM")),c(l[2],e("U")),c(B,e("SUP")),c(x,e("SUB")),b.cellEditor.isTableSelected()?(c(A,d(m.textAlign,"justify")),c(u,d(m.textAlign,"left")),c(r,d(m.textAlign,"center")),c(v,d(m.textAlign,"right"))):(e=b.cellEditor.align||mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),
+d(m.textAlign,"justify")?(c(A,d(m.textAlign,"justify")),c(u,!1),c(r,!1),c(v,!1)):(c(A,!1),c(u,e==mxConstants.ALIGN_LEFT),c(r,e==mxConstants.ALIGN_CENTER),c(v,e==mxConstants.ALIGN_RIGHT))),z=b.getParentByName(a,"TABLE",b.cellEditor.textarea),I=null==z?null:b.getParentByName(a,"TR",z),E=null==z?null:b.getParentByNames(a,["TD","TH"],z),C.style.display=null!=z?"":"none",document.activeElement!=O&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=M?(a.removeAttribute("size"),a.style.fontSize=M+" pt",
+M=null):O.value=isNaN(n)?"":n+" pt",y=parseFloat(p),isNaN(y)?ba.value="100 %":ba.value=Math.round(100*y)+" %"),d=m.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),n=m.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+
("0"+Number(d).toString(16)).substr(-2)}),null!=ma&&(ha="#"==d.charAt(0)?d:"#000000",ma(ha,!0)),null!=L&&(Q="#"==n.charAt(0)?n:null,L(Q,!0)),null!=k.firstChild&&(m=m.fontFamily,"'"==m.charAt(0)&&(m=m.substring(1)),"'"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1)),'"'==m.charAt(0)&&(m=m.substring(1)),'"'==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1)),k.firstChild.nodeValue=m))}G=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,
"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea,"input",e);mxEvent.addListener(b.cellEditor.textarea,"touchend",e);mxEvent.addListener(b.cellEditor.textarea,"mouseup",e);mxEvent.addListener(b.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black";
StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();a.containsLabel||(a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel())),a.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel())),this.container.appendChild(this.addStroke(this.createPanel())),this.container.appendChild(this.addLineJumps(this.createPanel())),
@@ -3124,19 +3125,19 @@ mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST],k=0;k<l.length;k++){var
var c=mxUtils.getValue(d.style,mxConstants.STYLE_GRADIENT_DIRECTION,mxConstants.DIRECTION_SOUTH),e=mxUtils.getValue(d.style,"fillStyle","auto");""==c&&(c=mxConstants.DIRECTION_SOUTH);b.value=c;f.value=e;a.style.display=d.fill?"":"none";c=mxUtils.getValue(d.style,mxConstants.STYLE_FILLCOLOR,null);!d.fill||d.containsImage||null==c||c==mxConstants.NONE||"filledEdge"==d.style.shape?(f.style.display="none",h.style.display="none"):(f.style.display="1"==d.style.sketch?"":"none",h.style.display="1"!=d.style.sketch||
"solid"==e||"auto"==e?"":"none")});c.getModel().addListener(mxEvent.CHANGE,m);this.listeners.push({destroy:function(){c.getModel().removeListener(m)}});m();mxEvent.addListener(b,"change",function(a){c.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,b.value,c.getSelectionCells());mxEvent.consume(a)});mxEvent.addListener(f,"change",function(a){c.setCellStyles("fillStyle",f.value,c.getSelectionCells());mxEvent.consume(a)});a.appendChild(e);a.appendChild(h);e=this.getCustomColors();for(k=0;k<e.length;k++)a.appendChild(this.createCellColorOption(e[k].title,
e[k].key,e[k].defaultValue));return a};StyleFormatPanel.prototype.getCustomColors=function(){var a=this.format.getSelectionState(),c=[];"swimlane"!=a.style.shape&&"table"!=a.style.shape||c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c};
-StyleFormatPanel.prototype.addStroke=function(a){function c(a){var c=parseInt(r.value),c=Math.min(999,Math.max(1,isNaN(c)?1:c));c!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,c,f.getSelectionCells()),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[c],"cells",f.getSelectionCells())));r.value=c+" pt";mxEvent.consume(a)}function d(a){var c=parseInt(w.value),c=Math.min(999,Math.max(1,isNaN(c)?1:
+StyleFormatPanel.prototype.addStroke=function(a){function c(a){var c=parseInt(q.value),c=Math.min(999,Math.max(1,isNaN(c)?1:c));c!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,c,f.getSelectionCells()),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[c],"cells",f.getSelectionCells())));q.value=c+" pt";mxEvent.consume(a)}function d(a){var c=parseInt(w.value),c=Math.min(999,Math.max(1,isNaN(c)?1:
c));c!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyles(mxConstants.STYLE_STROKEWIDTH,c,f.getSelectionCells()),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[c],"cells",f.getSelectionCells())));w.value=c+" pt";mxEvent.consume(a)}var b=this.editorUi,f=b.editor.graph,e=this.format.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var h=document.createElement("div");h.style.fontWeight=
"bold";var g=document.createElement("select");g.style.position="absolute";g.style.marginTop="-2px";g.style.right="72px";g.style.width="80px";for(var k=["sharp","rounded","curved"],l=0;l<k.length;l++){var n=document.createElement("option");n.setAttribute("value",k[l]);mxUtils.write(n,mxResources.get(k[l]));g.appendChild(n)}mxEvent.addListener(g,"change",function(a){f.getModel().beginUpdate();try{var c=[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],d=["0",null];"rounded"==g.value?d=["1",null]:
"curved"==g.value&&(d=[null,"1"]);for(var e=0;e<c.length;e++)f.setCellStyles(c[e],d[e],f.getSelectionCells());b.fireEvent(new mxEventObject("styleChanged","keys",c,"values",d,"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});var m="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR,k="image"==e.style.shape?mxResources.get("border"):mxResources.get("line"),l=1<=e.vertices.length?
f.stylesheet.getDefaultVertexStyle():f.stylesheet.getDefaultEdgeStyle(),k=this.createCellColorOption(k,m,null!=l[m]?l[m]:"#000000",null,mxUtils.bind(this,function(a){f.updateCellStyles(m,a,f.getSelectionCells())}));k.appendChild(g);h.appendChild(k);var p=h.cloneNode(!1);p.style.fontWeight="normal";p.style.whiteSpace="nowrap";p.style.position="relative";p.style.paddingLeft="16px";p.style.marginBottom="2px";p.style.marginTop="2px";p.className="geToolbarContainer";var u=mxUtils.bind(this,function(a,
b,c,d,e){a=this.editorUi.menus.styleChange(a,"",d,e,"geIcon",null);d=document.createElement("div");d.style.width=b+"px";d.style.height="1px";d.style.borderBottom="1px "+c+" "+this.defaultStrokeColor;d.style.paddingTop="6px";a.firstChild.firstChild.style.padding="0px 4px 0px 4px";a.firstChild.firstChild.style.width=b+"px";a.firstChild.firstChild.appendChild(d);return a}),l=this.editorUi.toolbar.addMenuFunctionInContainer(p,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,
75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",
-mxResources.get("dotted")+" (2)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),q=p.cloneNode(!1),v=this.editorUi.toolbar.addMenuFunctionInContainer(q,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",
+mxResources.get("dotted")+" (2)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),r=p.cloneNode(!1),v=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",
null,!0).setAttribute("title",mxResources.get("line"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["link",null,null,null],"geIcon geSprite geSprite-linkedge",null,!0).setAttribute("title",mxResources.get("link"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["flexArrow",null,null,null],"geIcon geSprite geSprite-arrow",null,!0).setAttribute("title",
-mxResources.get("arrow"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),n=this.editorUi.toolbar.addMenuFunctionInContainer(q,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",
+mxResources.get("arrow"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),n=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",
mxResources.get("solid"));u(a,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],
-["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),k=p.cloneNode(!1),r=document.createElement("input");r.style.textAlign="right";r.style.marginTop="2px";r.style.width="41px";r.setAttribute("title",mxResources.get("linewidth"));p.appendChild(r);var w=r.cloneNode(!0);q.appendChild(w);var t=this.createStepper(r,c,1,9);t.style.display=r.style.display;t.style.marginTop="2px";p.appendChild(t);var x=this.createStepper(w,d,1,9);x.style.display=w.style.display;x.style.marginTop="2px";q.appendChild(x);
-mxClient.IS_QUIRKS?(r.style.height="17px",w.style.height="17px"):(r.style.position="absolute",r.style.right="32px",r.style.height="15px",t.style.right="20px",w.style.position="absolute",w.style.right="32px",w.style.height="15px",x.style.right="20px");mxEvent.addListener(r,"blur",c);mxEvent.addListener(r,"change",c);mxEvent.addListener(w,"blur",d);mxEvent.addListener(w,"change",d);mxClient.IS_QUIRKS&&(mxUtils.br(k),mxUtils.br(k));var y=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-orthogonal",
+["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),k=p.cloneNode(!1),q=document.createElement("input");q.style.textAlign="right";q.style.marginTop="2px";q.style.width="41px";q.setAttribute("title",mxResources.get("linewidth"));p.appendChild(q);var w=q.cloneNode(!0);r.appendChild(w);var t=this.createStepper(q,c,1,9);t.style.display=q.style.display;t.style.marginTop="2px";p.appendChild(t);var y=this.createStepper(w,d,1,9);y.style.display=w.style.display;y.style.marginTop="2px";r.appendChild(y);
+mxClient.IS_QUIRKS?(q.style.height="17px",w.style.height="17px"):(q.style.position="absolute",q.style.height="15px",q.style.left="141px",t.style.left="190px",w.style.position="absolute",w.style.left="141px",w.style.height="15px",y.style.left="190px");mxEvent.addListener(q,"blur",c);mxEvent.addListener(q,"change",c);mxEvent.addListener(w,"blur",d);mxEvent.addListener(w,"change",d);mxClient.IS_QUIRKS&&(mxUtils.br(k),mxUtils.br(k));var x=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-orthogonal",
mxResources.get("waypoints"),!1,mxUtils.bind(this,function(a){"arrow"!=e.style.shape&&(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",null,!0).setAttribute("title",mxResources.get("straight")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle",null,null],"geIcon geSprite geSprite-orthogonal",
null,!0).setAttribute("title",mxResources.get("orthogonal")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",
"vertical",null,null],"geIcon geSprite geSprite-verticalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",null,!0).setAttribute("title",mxResources.get("isometric")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,
@@ -3165,20 +3166,20 @@ this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["dash",0],"geIcon geSprite geSprite-enddash",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["cross",0],"geIcon geSprite geSprite-endcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circlePlus",0],"geIcon geSprite geSprite-endcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
["circle",1],"geIcon geSprite geSprite-endcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],"geIcon geSprite geSprite-enderone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],"geIcon geSprite geSprite-enderonetoone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],"geIcon geSprite geSprite-endermany",null,!1),this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],"geIcon geSprite geSprite-enderonetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],
-"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(v,8);this.addArrow(y);this.addArrow(B);this.addArrow(A);t=this.addArrow(l,9);t.className="geIcon";t.style.width="84px";x=this.addArrow(n,9);x.className="geIcon";x.style.width="22px";var C=document.createElement("div");C.style.width="85px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";t.appendChild(C);var z=document.createElement("div");
-z.style.width="23px";z.style.height="1px";z.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.marginBottom="9px";x.appendChild(z);l.style.height="15px";n.style.height="15px";v.style.height="15px";y.style.height="17px";B.style.marginLeft="3px";B.style.height="17px";A.style.marginLeft="3px";A.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(p);l=p.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";n=document.createElement("div");
+"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(v,8);this.addArrow(x);this.addArrow(B);this.addArrow(A);t=this.addArrow(l,9);t.className="geIcon";t.style.width="auto";y=this.addArrow(n,9);y.className="geIcon";y.style.width="22px";var C=document.createElement("div");C.style.width="85px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";t.appendChild(C);var z=document.createElement("div");
+z.style.width="23px";z.style.height="1px";z.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.marginBottom="9px";y.appendChild(z);l.style.height="15px";n.style.height="15px";v.style.height="15px";x.style.height="17px";B.style.marginLeft="3px";B.style.height="17px";A.style.marginLeft="3px";A.style.height="17px";a.appendChild(h);a.appendChild(r);a.appendChild(p);l=p.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";n=document.createElement("div");
n.style.position="absolute";n.style.marginLeft="3px";n.style.marginBottom="12px";n.style.marginTop="2px";n.style.fontWeight="normal";n.style.width="76px";mxUtils.write(n,mxResources.get("lineend"));l.appendChild(n);var E,I,H=this.addUnitInput(l,"pt",74,33,function(){E.apply(this,arguments)}),N=this.addUnitInput(l,"pt",20,33,function(){I.apply(this,arguments)});mxUtils.br(l);t=document.createElement("div");t.style.height="8px";l.appendChild(t);n=n.cloneNode(!1);mxUtils.write(n,mxResources.get("linestart"));
l.appendChild(n);var F,K,U=this.addUnitInput(l,"pt",74,33,function(){F.apply(this,arguments)}),T=this.addUnitInput(l,"pt",20,33,function(){K.apply(this,arguments)});mxUtils.br(l);this.addLabel(l,mxResources.get("spacing"),74,50);this.addLabel(l,mxResources.get("size"),20,50);mxUtils.br(l);h=h.cloneNode(!1);h.style.fontWeight="normal";h.style.position="relative";h.style.paddingLeft="16px";h.style.marginBottom="2px";h.style.marginTop="6px";h.style.borderWidth="0px";h.style.paddingBottom="18px";n=document.createElement("div");
n.style.position="absolute";n.style.marginLeft="3px";n.style.marginBottom="12px";n.style.marginTop="1px";n.style.fontWeight="normal";n.style.width="120px";mxUtils.write(n,mxResources.get("perimeter"));h.appendChild(n);var O,M=this.addUnitInput(h,"pt",20,41,function(){O.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));
var L=mxUtils.bind(this,function(a,c,d){function h(a,c,d,f){d=d.getElementsByTagName("div")[0];null!=d&&(d.className=b.getCssClassForMarker(f,e.style.shape,a,c),"geSprite geSprite-noarrow"==d.className&&(d.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),d.style.backgroundImage="none",d.style.verticalAlign="top",d.style.marginTop="5px",d.style.fontSize="10px",d.style.filter="none",d.style.color=this.defaultStrokeColor,d.nextSibling.style.marginTop="0px"));return d}e=this.format.getSelectionState();
-mxUtils.getValue(e.style,m,null);if(d||document.activeElement!=r)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),r.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,
-null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?C.style.borderBottom="1px dashed "+this.defaultStrokeColor:C.style.borderBottom="1px dotted "+this.defaultStrokeColor:C.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.borderBottom=C.style.borderBottom;a=y.getElementsByTagName("div")[0];null!=a&&(c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,
+mxUtils.getValue(e.style,m,null);if(d||document.activeElement!=q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),q.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,
+null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?C.style.borderBottom="1px dashed "+this.defaultStrokeColor:C.style.borderBottom="1px dotted "+this.defaultStrokeColor:C.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.borderBottom=C.style.borderBottom;a=x.getElementsByTagName("div")[0];null!=a&&(c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,
mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null),"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c||"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==
-mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");a=v.getElementsByTagName("div")[0];null!=a&&(a.className="link"==e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection");e.edges.length==f.getSelectionCount()?(q.style.display="",p.style.display="none"):(q.style.display="none",
-p.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),B,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,"endFill","1"),A,"end");null!=a&&null!=c&&("arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(y,
+mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");a=v.getElementsByTagName("div")[0];null!=a&&(a.className="link"==e.style.shape?"geSprite geSprite-linkedge":"flexArrow"==e.style.shape?"geSprite geSprite-arrow":"arrow"==e.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection");e.edges.length==f.getSelectionCount()?(r.style.display="",p.style.display="none"):(r.style.display="none",
+p.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),B,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,"endFill","1"),A,"end");null!=a&&null!=c&&("arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(x,
"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(B,30),mxUtils.setOpacity(A,30)):(mxUtils.setOpacity(B,100),mxUtils.setOpacity(A,100));if(d||document.activeElement!=T)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),T.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=U)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),U.value=
isNaN(a)?"":a+" pt";if(d||document.activeElement!=N)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),N.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=U)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),H.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=M)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),M.value=isNaN(a)?"":a+" pt"});K=this.installInputHandler(T,mxConstants.STYLE_STARTSIZE,
-mxConstants.DEFAULT_MARKERSIZE,0,999," pt");F=this.installInputHandler(U,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");I=this.installInputHandler(N,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");E=this.installInputHandler(H,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");O=this.installInputHandler(M,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(r,L);this.addKeyHandler(T,L);this.addKeyHandler(U,L);this.addKeyHandler(N,L);this.addKeyHandler(H,
+mxConstants.DEFAULT_MARKERSIZE,0,999," pt");F=this.installInputHandler(U,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");I=this.installInputHandler(N,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");E=this.installInputHandler(H,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");O=this.installInputHandler(M,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(q,L);this.addKeyHandler(T,L);this.addKeyHandler(U,L);this.addKeyHandler(N,L);this.addKeyHandler(H,
L);this.addKeyHandler(M,L);f.getModel().addListener(mxEvent.CHANGE,L);this.listeners.push({destroy:function(){f.getModel().removeListener(L)}});L();return a};
StyleFormatPanel.prototype.addLineJumps=function(a){var c=this.format.getSelectionState();if(Graph.lineJumpsEnabled&&0<c.edges.length&&0==c.vertices.length&&c.lineJumps){a.style.padding="8px 0px 24px 18px";var d=this.editorUi,b=d.editor.graph,f=document.createElement("div");f.style.position="absolute";f.style.fontWeight="bold";f.style.width="80px";mxUtils.write(f,mxResources.get("lineJumps"));a.appendChild(f);var e=document.createElement("select");e.style.position="absolute";e.style.marginTop="-2px";
e.style.right="76px";e.style.width="62px";for(var f=["none","arc","gap","sharp"],h=0;h<f.length;h++){var g=document.createElement("option");g.setAttribute("value",f[h]);mxUtils.write(g,mxResources.get(f[h]));e.appendChild(g)}mxEvent.addListener(e,"change",function(a){b.getModel().beginUpdate();try{b.setCellStyles("jumpStyle",e.value,b.getSelectionCells()),d.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}mxEvent.consume(a)});
@@ -3191,16 +3192,17 @@ StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.s
mxUtils.extend(DiagramStylePanel,BaseFormatPanel);DiagramStylePanel.prototype.init=function(){this.container.appendChild(this.addView(this.createPanel()))};
DiagramStylePanel.prototype.addView=function(a){var c=this.editorUi,d=c.editor.graph,b=d.getModel();a.style.whiteSpace="normal";var f="1"==d.currentVertexStyle.sketch&&"1"==d.currentEdgeStyle.sketch,e="1"==d.currentVertexStyle.rounded,h="1"==d.currentEdgeStyle.curved,g=document.createElement("div");g.style.paddingBottom="12px";g.style.marginRight="16px";var k=document.createElement("table");mxClient.IS_QUIRKS&&(k.style.fontSize="1em");k.style.width="100%";k.style.fontWeight="bold";var l=document.createElement("tbody"),
n=document.createElement("tr");n.style.padding="0px";var m=document.createElement("td");m.style.padding="0px";m.style.width="50%";m.setAttribute("valign","middle");var p=m.cloneNode(!0);p.style.paddingLeft="8px";n.appendChild(m);n.appendChild(p);l.appendChild(n);k.appendChild(l);m.appendChild(this.createOption(mxResources.get("sketch"),function(){return f},function(a){(f=a)?(d.currentEdgeStyle.sketch="1",d.currentVertexStyle.sketch="1"):(delete d.currentEdgeStyle.sketch,delete d.currentVertexStyle.sketch);
-d.updateCellStyles("sketch",a?"1":null,d.getCells())},null,function(a){a.style.width="auto"}));p.appendChild(this.createOption(mxResources.get("rounded"),function(){return e},function(a){(e=a)?d.currentVertexStyle.rounded="1":delete d.currentVertexStyle.rounded;d.updateCellStyles("rounded",a?"1":null,d.getCells(!0,!1))},null,function(a){a.style.width="auto"}));m=m.cloneNode(!1);p=m.cloneNode(!1);n=n.cloneNode(!1);n.appendChild(m);n.appendChild(p);l.appendChild(n);m.appendChild(this.createOption(mxResources.get("curved"),
-function(){return h},function(a){(h=a)?d.currentEdgeStyle.curved="1":delete d.currentEdgeStyle.curved;d.updateCellStyles("curved",a?"1":null,d.getCells(!1,!0))},null,function(a){a.style.width="auto"}));g.appendChild(k);a.appendChild(g);for(var u=["fillColor","strokeColor","fontColor","gradientColor"],q=mxUtils.bind(this,function(a,c){var e=d.getCells();b.beginUpdate();try{for(var f=0;f<e.length;f++){var g=d.getCellStyle(e[f]);null!=g.labelBackgroundColor&&d.updateCellStyles("labelBackgroundColor",
-null!=c?c.background:null,[e[f]]);for(var h=b.isEdge(e[f]),k=b.getStyle(e[f]),l=h?d.currentEdgeStyle:d.currentVertexStyle,m=0;m<a.length;m++)if(null!=g[a[m]]&&g[a[m]]!=mxConstants.NONE||a[m]!=mxConstants.STYLE_FILLCOLOR&&a[m]!=mxConstants.STYLE_STROKECOLOR)k=mxUtils.setStyle(k,a[m],l[a[m]]);b.setStyle(e[f],k)}}finally{b.endUpdate()}}),v=mxUtils.bind(this,function(a,b,c){if(null!=a)for(var d=0;d<b.length;d++)if(null!=a[b[d]]&&a[b[d]]!=mxConstants.NONE||b[d]!=mxConstants.STYLE_FILLCOLOR&&b[d]!=mxConstants.STYLE_STROKECOLOR)a[b[d]]=
-c[b[d]]}),r=mxUtils.bind(this,function(a,b,c,e,f){if(null!=a){null!=c&&null!=b.labelBackgroundColor&&(e=null!=e?e.background:null,f=null!=f?f:d,null==e&&(e=f.background),null==e&&(e=f.defaultPageBackgroundColor),b.labelBackgroundColor=e);for(var g in a)if(null==c||null!=b[g]&&b[g]!=mxConstants.NONE||g!=mxConstants.STYLE_FILLCOLOR&&g!=mxConstants.STYLE_STROKECOLOR)b[g]=a[g]}}),w=mxUtils.bind(this,function(a,c,e,f,g){var h=document.createElement("div");h.style.cssText="position:absolute;display:inline-block;width:100%;height:100%;overflow:hidden;pointer-events:none;";
-g.appendChild(h);var k=new Graph(h,null,null,d.getStylesheet());k.resetViewOnRootChange=!1;k.foldingEnabled=!1;k.gridEnabled=!1;k.autoScroll=!1;k.setTooltips(!1);k.setConnectable(!1);k.setPanning(!1);k.setEnabled(!1);k.getCellStyle=function(g){var h=mxUtils.clone(Graph.prototype.getCellStyle.apply(this,arguments)),l=d.stylesheet.getDefaultVertexStyle(),m=c;b.isEdge(g)&&(l=d.stylesheet.getDefaultEdgeStyle(),m=e);v(h,u,l);r(a,h,g,f,k);r(m,h,g,f,k);return h};k.model.beginUpdate();try{var l=k.insertVertex(k.getDefaultParent(),
-null,"Shape",14,8,70,40,"strokeWidth=2;"),m=k.insertEdge(k.getDefaultParent(),null,"Connector",l,l,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");m.geometry.points=[new mxPoint(32,70)];m.geometry.offset=new mxPoint(0,8)}finally{k.model.endUpdate()}}),g=mxUtils.bind(this,function(g,k,l,m){var n=document.createElement("div");n.style.cssText="display:inline-block;position:relative;width:96px;height:90px;cursor:pointer;border:1px solid gray;margin:2px;overflow:hidden;";
-null!=m&&null!=m.background&&(n.style.backgroundColor=m.background);w(g,k,l,m,n);mxEvent.addGestureListeners(n,mxUtils.bind(this,function(a){n.style.opacity=.5}),null,mxUtils.bind(this,function(a){n.style.opacity=1;d.defaultVertexStyle=mxUtils.clone(c.initialDefaultVertexStyle);d.defaultEdgeStyle=mxUtils.clone(c.initialDefaultEdgeStyle);r(g,d.defaultVertexStyle);r(g,d.defaultEdgeStyle);r(k,d.defaultVertexStyle);r(l,d.defaultEdgeStyle);f?(d.defaultEdgeStyle.sketch="1",d.defaultVertexStyle.sketch="1"):
-(d.defaultEdgeStyle.sketch="0",d.defaultVertexStyle.sketch="0");d.defaultVertexStyle.rounded=e?"1":"0";d.defaultEdgeStyle.curved=h?"1":"0";b.beginUpdate();try{c.clearDefaultStyle();q(u,m);var p=new ChangePageSetup(c,null!=m?m.background:null);p.ignoreImage=!0;b.execute(p);b.execute(new ChangeGridColor(c,null!=m&&null!=m.gridColor?m.gridColor:d.view.defaultGridColor))}finally{b.endUpdate()}}));mxEvent.addListener(n,"mouseenter",mxUtils.bind(this,function(a){var c=d.getCellStyle;a=d.background;var e=
-d.view.gridColor;d.background=null!=m?m.background:null;d.view.gridColor=null!=m&&null!=m.gridColor?m.gridColor:d.view.defaultGridColor;d.getCellStyle=function(a){var e=mxUtils.clone(c.apply(this,arguments)),f=d.stylesheet.getDefaultVertexStyle(),h=k;b.isEdge(a)&&(f=d.stylesheet.getDefaultEdgeStyle(),h=l);v(e,u,f);r(g,e,a,m);r(h,e,a,m);return e};d.refresh();d.getCellStyle=c;d.background=a;d.view.gridColor=e}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){d.refresh()}));a.appendChild(n)}),
-k=0;k<Editor.styles.length;k++)l=Editor.styles[k],g(l.commonStyle,l.vertexStyle,l.edgeStyle,l.graph);return a};DiagramFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
+d.updateCellStyles("sketch",a?"1":null,d.getCells())},null,function(a){a.style.width="auto"}));p.appendChild(this.createOption(mxResources.get("rounded"),function(){return e},function(a){(e=a)?d.currentVertexStyle.rounded="1":delete d.currentVertexStyle.rounded;d.updateCellStyles("rounded",a?"1":null,d.getCells(!0,!1))},null,function(a){a.style.width="auto"}));m=m.cloneNode(!1);p=p.cloneNode(!1);n=n.cloneNode(!1);n.appendChild(m);n.appendChild(p);l.appendChild(n);m.appendChild(this.createOption(mxResources.get("curved"),
+function(){return h},function(a){(h=a)?d.currentEdgeStyle.curved="1":delete d.currentEdgeStyle.curved;d.updateCellStyles("curved",a?"1":null,d.getCells(!1,!0))},null,function(a){a.style.width="auto"}));g.appendChild(k);a.appendChild(g);var u=["fillColor","strokeColor","fontColor","gradientColor"],r=mxUtils.bind(this,function(a,c){var e=d.getCells();b.beginUpdate();try{for(var f=0;f<e.length;f++){var g=d.getCellStyle(e[f]);null!=g.labelBackgroundColor&&d.updateCellStyles("labelBackgroundColor",null!=
+c?c.background:null,[e[f]]);for(var h=b.isEdge(e[f]),k=b.getStyle(e[f]),l=h?d.currentEdgeStyle:d.currentVertexStyle,m=0;m<a.length;m++)if(null!=g[a[m]]&&g[a[m]]!=mxConstants.NONE||a[m]!=mxConstants.STYLE_FILLCOLOR&&a[m]!=mxConstants.STYLE_STROKECOLOR)k=mxUtils.setStyle(k,a[m],l[a[m]]);b.setStyle(e[f],k)}}finally{b.endUpdate()}}),v=mxUtils.bind(this,function(a,b,c){if(null!=a)for(var d=0;d<b.length;d++)if(null!=a[b[d]]&&a[b[d]]!=mxConstants.NONE||b[d]!=mxConstants.STYLE_FILLCOLOR&&b[d]!=mxConstants.STYLE_STROKECOLOR)a[b[d]]=
+c[b[d]]}),q=mxUtils.bind(this,function(a,b,c,e,f){if(null!=a){null!=c&&null!=b.labelBackgroundColor&&(e=null!=e?e.background:null,f=null!=f?f:d,null==e&&(e=f.background),null==e&&(e=f.defaultPageBackgroundColor),b.labelBackgroundColor=e);for(var g in a)if(null==c||null!=b[g]&&b[g]!=mxConstants.NONE||g!=mxConstants.STYLE_FILLCOLOR&&g!=mxConstants.STYLE_STROKECOLOR)b[g]=a[g]}}),g=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(a){d.defaultVertexStyle=mxUtils.clone(c.initialDefaultVertexStyle);
+d.defaultEdgeStyle=mxUtils.clone(c.initialDefaultEdgeStyle);c.clearDefaultStyle()}));g.setAttribute("title",mxResources.get("reset"));g.style.textOverflow="ellipsis";g.style.maxWidth="90px";p.appendChild(g);for(var w=mxUtils.bind(this,function(a,c,e,f,g){var h=document.createElement("div");h.style.cssText="position:absolute;display:inline-block;width:100%;height:100%;overflow:hidden;pointer-events:none;";g.appendChild(h);var k=new Graph(h,null,null,d.getStylesheet());k.resetViewOnRootChange=!1;k.foldingEnabled=
+!1;k.gridEnabled=!1;k.autoScroll=!1;k.setTooltips(!1);k.setConnectable(!1);k.setPanning(!1);k.setEnabled(!1);k.getCellStyle=function(g){var h=mxUtils.clone(Graph.prototype.getCellStyle.apply(this,arguments)),l=d.stylesheet.getDefaultVertexStyle(),m=c;b.isEdge(g)&&(l=d.stylesheet.getDefaultEdgeStyle(),m=e);v(h,u,l);q(a,h,g,f,k);q(m,h,g,f,k);return h};k.model.beginUpdate();try{var l=k.insertVertex(k.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),m=k.insertEdge(k.getDefaultParent(),null,
+"Connector",l,l,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");m.geometry.points=[new mxPoint(32,70)];m.geometry.offset=new mxPoint(0,8)}finally{k.model.endUpdate()}}),p=mxUtils.bind(this,function(g,k,l,m){var n=document.createElement("div");n.style.cssText="display:inline-block;position:relative;width:96px;height:90px;cursor:pointer;border:1px solid gray;margin:2px;overflow:hidden;";null!=m&&null!=m.background&&(n.style.backgroundColor=m.background);
+w(g,k,l,m,n);mxEvent.addGestureListeners(n,mxUtils.bind(this,function(a){n.style.opacity=.5}),null,mxUtils.bind(this,function(a){n.style.opacity=1;d.defaultVertexStyle=mxUtils.clone(c.initialDefaultVertexStyle);d.defaultEdgeStyle=mxUtils.clone(c.initialDefaultEdgeStyle);q(g,d.defaultVertexStyle);q(g,d.defaultEdgeStyle);q(k,d.defaultVertexStyle);q(l,d.defaultEdgeStyle);c.clearDefaultStyle();f?(d.currentEdgeStyle.sketch="1",d.currentVertexStyle.sketch="1"):(d.currentEdgeStyle.sketch="0",d.currentVertexStyle.sketch=
+"0");d.currentVertexStyle.rounded=e?"1":"0";d.currentEdgeStyle.curved=h?"1":"0";b.beginUpdate();try{r(u,m);var p=new ChangePageSetup(c,null!=m?m.background:null);p.ignoreImage=!0;b.execute(p);b.execute(new ChangeGridColor(c,null!=m&&null!=m.gridColor?m.gridColor:d.view.defaultGridColor))}finally{b.endUpdate()}}));mxEvent.addListener(n,"mouseenter",mxUtils.bind(this,function(a){var c=d.getCellStyle;a=d.background;var e=d.view.gridColor;d.background=null!=m?m.background:null;d.view.gridColor=null!=
+m&&null!=m.gridColor?m.gridColor:d.view.defaultGridColor;d.getCellStyle=function(a){var e=mxUtils.clone(c.apply(this,arguments)),f=d.stylesheet.getDefaultVertexStyle(),h=k;b.isEdge(a)&&(f=d.stylesheet.getDefaultEdgeStyle(),h=l);v(e,u,f);q(g,e,a,m);q(h,e,a,m);return e};d.refresh();d.getCellStyle=c;d.background=a;d.view.gridColor=e}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){d.refresh()}));a.appendChild(n)}),g=0;g<Editor.styles.length;g++)k=Editor.styles[g],p(k.commonStyle,k.vertexStyle,
+k.edgeStyle,k.graph);return a};DiagramFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.init=function(){var a=this.editorUi.editor.graph;this.container.appendChild(this.addView(this.createPanel()));a.isEnabled()&&(this.container.appendChild(this.addOptions(this.createPanel())),this.container.appendChild(this.addPaperSize(this.createPanel())),this.container.appendChild(this.addStyleOps(this.createPanel())))};
DiagramFormatPanel.prototype.addView=function(a){var c=this.editorUi,d=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return d.pageVisible},function(a){c.actions.get("pageView").funct()},{install:function(a){this.listener=function(){a(d.pageVisible)};c.addListener("pageViewChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}}));
if(d.isEnabled()){var b=this.createColorOption(mxResources.get("background"),function(){return d.background},function(a){a=new ChangePageSetup(c,a);a.ignoreImage=!0;d.model.execute(a)},"#ffffff",{install:function(a){this.listener=function(){a(d.background)};c.addListener("backgroundColorChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});if(this.showBackgroundImageOption){var f=mxUtils.button(mxResources.get("image"),function(a){c.showBackgroundImageDialog(null,c.editor.graph.backgroundImage);
@@ -3217,9 +3219,9 @@ DiagramFormatPanel.prototype.addDocumentProperties=function(a){a.appendChild(thi
DiagramFormatPanel.prototype.addPaperSize=function(a){var c=this.editorUi,d=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var b=PageSetupDialog.addPageFormatPanel(a,"formatpanel",d.pageFormat,function(a){if(null==d.pageFormat||d.pageFormat.width!=a.width||d.pageFormat.height!=a.height)a=new ChangePageSetup(c,null,null,a),a.ignoreColor=!0,a.ignoreImage=!0,d.model.execute(a)});this.addKeyHandler(b.widthInput,function(){b.set(d.pageFormat)});this.addKeyHandler(b.heightInput,
function(){b.set(d.pageFormat)});var f=function(){b.set(d.pageFormat)};c.addListener("pageFormatChanged",f);this.listeners.push({destroy:function(){c.removeListener(f)}});d.getModel().addListener(mxEvent.CHANGE,f);this.listeners.push({destroy:function(){d.getModel().removeListener(f)}});return a};
DiagramFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()}));c.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")");c.style.width="202px";c.style.marginBottom="2px";a.appendChild(c);mxUtils.br(a);c=mxUtils.button(mxResources.get("clearDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearDefaultStyle").funct()}));
-c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);return a};DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function d(){mxActor.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxCylinder.call(this)}function h(){mxActor.call(this)}function g(){mxCylinder.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function n(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function u(){mxActor.call(this)}function q(){mxActor.call(this)}
+c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);return a};DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function d(){mxActor.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxCylinder.call(this)}function h(){mxActor.call(this)}function g(){mxCylinder.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function n(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function u(){mxActor.call(this)}function r(){mxActor.call(this)}
function v(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,v.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,v.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,v.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,v.prototype.quadTo);this.originalCurveTo=
-this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,v.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,v.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function w(){mxRectangleShape.call(this)}function t(){mxActor.call(this)}function x(){mxActor.call(this)}function y(){mxActor.call(this)}function B(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function C(){mxCylinder.call(this)}function z(){mxShape.call(this)}function E(){mxShape.call(this)}
+this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,v.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,v.prototype.arcTo)}function q(){mxRectangleShape.call(this)}function w(){mxRectangleShape.call(this)}function t(){mxActor.call(this)}function y(){mxActor.call(this)}function x(){mxActor.call(this)}function B(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function C(){mxCylinder.call(this)}function z(){mxShape.call(this)}function E(){mxShape.call(this)}
function I(){mxEllipse.call(this)}function H(){mxShape.call(this)}function N(){mxShape.call(this)}function F(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function U(){mxShape.call(this)}function T(){mxShape.call(this)}function O(){mxShape.call(this)}function M(){mxShape.call(this)}function L(){mxCylinder.call(this)}function Q(){mxCylinder.call(this)}function ma(){mxRectangleShape.call(this)}function ha(){mxDoubleEllipse.call(this)}function na(){mxDoubleEllipse.call(this)}function ca(){mxArrowConnector.call(this);
this.spacing=0}function da(){mxArrowConnector.call(this);this.spacing=0}function ea(){mxActor.call(this)}function X(){mxRectangleShape.call(this)}function Z(){mxActor.call(this)}function oa(){mxActor.call(this)}function V(){mxActor.call(this)}function R(){mxActor.call(this)}function ka(){mxActor.call(this)}function aa(){mxActor.call(this)}function la(){mxActor.call(this)}function ga(){mxActor.call(this)}function ba(){mxActor.call(this)}function S(){mxActor.call(this)}function G(){mxEllipse.call(this)}
function J(){mxEllipse.call(this)}function ia(){mxEllipse.call(this)}function ja(){mxRhombus.call(this)}function W(){mxEllipse.call(this)}function ra(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function Aa(){mxActor.call(this)}function ua(){mxActor.call(this)}function va(){mxActor.call(this)}function sa(){mxConnector.call(this)}function Ia(a,b,c,d,e,f,g,h,k,l){g+=k;var D=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(D.x-
@@ -3242,7 +3244,7 @@ a.height):null};n.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.m
Math.min(1,e)):Ma.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.isRoundable=function(){return!0};m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("parallelogram",m);mxUtils.extend(p,mxActor);p.prototype.size=.2;p.prototype.isRoundable=function(){return!0};p.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",p);mxUtils.extend(u,mxActor);u.prototype.size=.5;u.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(b,0),new mxPoint(b,
-e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",u);mxUtils.extend(q,mxActor);q.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",q);v.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,
+e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",u);mxUtils.extend(r,mxActor);r.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",r);v.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,
arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};v.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};v.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};v.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};
v.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};v.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(d*d+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),D=this.defaultVariation;5>g&&(g=5,D/=3);for(var h=c(a-this.lastX)*
d/g,c=c(b-this.lastY)*e/g,d=d/f,e=e/f,f=0;f<g;f++){var k=(Math.random()-.5)*D;this.originalLineTo.call(this.canvas,h*f+this.lastX-k*e,c*f+this.lastY-k*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};v.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;
@@ -3250,164 +3252,164 @@ this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Na
this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var Pa=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&Pa.apply(this,arguments)};
var Qa=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle||a.handJiggle.constructor!=v)Qa.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,
mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?f=Math.min(d/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(d*f,e*f)),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadTo(b,c,b+f,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+
-d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Ra=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Ra.apply(this,arguments)};mxUtils.extend(r,mxRectangleShape);r.prototype.size=.1;r.prototype.isHtmlAllowed=function(){return!1};r.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
-this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};r.prototype.paintForeground=function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));f=Math.round(f);a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",r);mxUtils.extend(w,mxRectangleShape);w.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);
+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Ra=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Ra.apply(this,arguments)};mxUtils.extend(q,mxRectangleShape);q.prototype.size=.1;q.prototype.isHtmlAllowed=function(){return!1};q.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
+this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};q.prototype.paintForeground=function(a,b,c,d,e){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));f=Math.round(f);a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",q);mxUtils.extend(w,mxRectangleShape);w.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);
a.rect(b,c,d,e);a.fill()};w.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",w);mxUtils.extend(t,mxHexagon);t.prototype.size=30;t.prototype.position=.5;t.prototype.position2=.5;t.prototype.base=20;t.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,f+h),e-c),new mxPoint(g,
-e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",t);mxUtils.extend(x,mxActor);x.prototype.size=.2;x.prototype.fixedSize=20;x.prototype.isRoundable=function(){return!0};x.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));
-c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",x);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));
-c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(B,mxRectangleShape);B.prototype.isHtmlAllowed=function(){return!1};B.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+
-e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",B);var Ja=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ja.apply(this,
-arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Ja.apply(this,[a,b,c,d,e]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-b,a.y+b,a.width-2*b,a.height-2*b)}return a};A.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=g){var h=this.style["symbol"+f+"Align"],D=this.style["symbol"+f+
-"VerticalAlign"],k=this.style["symbol"+f+"Width"],l=this.style["symbol"+f+"Height"],m=this.style["symbol"+f+"Spacing"]||0,fa=this.style["symbol"+f+"VSpacing"]||m,Y=this.style["symbol"+f+"ArcSpacing"];null!=Y&&(Y*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),m+=Y,fa+=Y);var Y=b,n=c,Y=h==mxConstants.ALIGN_CENTER?Y+(d-k)/2:h==mxConstants.ALIGN_RIGHT?Y+(d-k-m):Y+m,n=D==mxConstants.ALIGN_MIDDLE?n+(e-l)/2:D==mxConstants.ALIGN_BOTTOM?n+(e-l-fa):n+fa;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,
-a,Y,n,k,l);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(C,mxCylinder);C.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",C);mxUtils.extend(z,mxShape);z.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/
-4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",z);mxUtils.extend(E,mxShape);E.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();
-a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",E);mxUtils.extend(I,mxEllipse);I.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",I);mxUtils.extend(H,mxShape);H.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();
-a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(N,mxShape);N.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};N.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,e/8,d,7*e/8);a.fillAndStroke()};N.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/
-8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",N);mxUtils.extend(F,mxRectangleShape);F.prototype.size=40;F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};F.prototype.paintBackground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
-"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=F&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};F.prototype.paintForeground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.registerShape("umlLifeline",F);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,
-b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,
-this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=F.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=
-parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,c,
-d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",
-mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",t.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,
-h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]);k=a.getCenterX();a=a.getCenterY();
-a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=p.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,
-Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(f+h,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e)]):(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+
-h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?x.prototype.fixedSize:x.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var g=a.x,h=a.y,
-k=a.width,D=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(g+k-e,h),new mxPoint(g+k,a),new mxPoint(g+k-e,h+D),new mxPoint(g,h+D),new mxPoint(g+e,a),new mxPoint(g,h)]):b==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g+
-e,h),new mxPoint(g+k,h),new mxPoint(g+k-e,a),new mxPoint(g+k,h+D),new mxPoint(g+e,h+D),new mxPoint(g,a),new mxPoint(g+e,h)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(D,f)):D*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h+e),new mxPoint(l,h),new mxPoint(g+k,h+e),new mxPoint(g+k,h+D),new mxPoint(l,h+D-e),new mxPoint(g,h+D),new mxPoint(g,h+e)]):(e=e?Math.max(0,Math.min(D,f)):D*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(l,h+e),new mxPoint(g+k,h),new mxPoint(g+k,h+D-e),new mxPoint(l,
-h+D),new mxPoint(g,h+D-e),new mxPoint(g,h)]);l=new mxPoint(l,a);d&&(c.x<g||c.x>g+k?l.y=c.y:l.x=c.x);return mxUtils.getPerimeterPoint(h,l,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e=y.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height,D=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
-b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(D,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(D,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e),new mxPoint(D,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,a),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,a),new mxPoint(f+e,g)]);D=new mxPoint(D,a);d&&(c.x<f||c.x>f+h?D.y=c.y:D.x=c.x);return mxUtils.getPerimeterPoint(g,
-D,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(U,mxShape);U.prototype.size=10;U.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(d/2,f);a.lineTo(d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",U);mxUtils.extend(T,mxShape);T.prototype.size=10;T.prototype.inset=2;T.prototype.paintBackground=function(a,
-b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+f)/2+g,f+g,(d+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",T);mxUtils.extend(O,mxShape);O.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,
-0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",O);mxUtils.extend(M,mxShape);M.prototype.inset=2;M.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.ellipse(0,f,d-2*f,e-2*f);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",M);mxUtils.extend(L,
-mxCylinder);L.prototype.jettyWidth=20;L.prototype.jettyHeight=10;L.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=Math.min(b,e-b),k=Math.min(h+2*b,e-b);f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,
-k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("module",L);mxUtils.extend(Q,mxCylinder);Q.prototype.jettyWidth=32;Q.prototype.jettyHeight=12;Q.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,
-h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("component",Q);mxUtils.extend(ma,mxRectangleShape);ma.prototype.paintForeground=function(a,b,c,d,e){var f=d/2,g=e/2,h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
-mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(b+f,c),new mxPoint(b+d,c+g),new mxPoint(b+f,c+e),new mxPoint(b,c+g)],this.isRounded,h,!0);a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",ma);mxUtils.extend(ha,mxDoubleEllipse);ha.prototype.outerStroke=!0;ha.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);
-this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",ha);mxUtils.extend(na,ha);na.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",na);mxUtils.extend(ca,mxArrowConnector);ca.prototype.defaultWidth=4;ca.prototype.isOpenEnded=function(){return!0};ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ca.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",
-ca);mxUtils.extend(da,mxArrowConnector);da.prototype.defaultWidth=10;da.prototype.defaultArrowWidth=20;da.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};da.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};da.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-
-1)};mxCellRenderer.registerShape("flexArrow",da);mxUtils.extend(ea,mxActor);ea.prototype.size=30;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",
-ea);mxUtils.extend(X,mxRectangleShape);X.prototype.dx=20;X.prototype.dy=20;X.prototype.isHtmlAllowed=function(){return!1};X.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,
-parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",X);mxUtils.extend(Z,mxActor);Z.prototype.dx=20;Z.prototype.dy=20;Z.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,
-"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",Z);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",
-oa);mxUtils.extend(V,mxActor);V.prototype.dx=20;V.prototype.dy=20;V.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/
-2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",V);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"arrowSize",R.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ka);mxUtils.extend(aa,mxActor);aa.prototype.size=.1;aa.prototype.redrawPath=function(a,
-b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",aa);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",la);mxUtils.extend(ga,mxActor);ga.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,
-0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",ga);mxUtils.extend(ba,mxActor);ba.prototype.size=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),
-new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("loopLimit",ba);mxUtils.extend(S,mxActor);S.prototype.size=.375;S.prototype.isRoundable=function(){return!0};S.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,
-e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",S);mxUtils.extend(G,mxEllipse);G.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",G);mxUtils.extend(J,mxEllipse);J.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);
-a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",J);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();
-a.stroke()};mxCellRenderer.registerShape("sumEllipse",ia);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();
-a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",W);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",
-ra);mxUtils.extend(wa,mxEllipse);wa.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);if(null!=this.style){var f=a.pointerEvents;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1);a.rect(b,c,d,e);a.fill();a.pointerEvents=f;a.setStrokeColor(this.stroke);a.begin();a.moveTo(b,c);"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c);"1"==mxUtils.getValue(this.style,
-"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e);"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(b,c+e):a.moveTo(b,c+e);"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(b,c);a.end();a.stroke()}};mxCellRenderer.registerShape("partialRectangle",wa);mxUtils.extend(za,mxEllipse);za.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+
-d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",za);mxUtils.extend(Aa,mxActor);Aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",Aa);mxUtils.extend(ua,mxActor);ua.prototype.size=.2;ua.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",ua);mxUtils.extend(va,mxActor);va.prototype.size=.25;va.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,
-0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",va);mxUtils.extend(sa,mxConnector);sa.prototype.origPaintEdgeShape=sa.prototype.paintEdgeShape;sa.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;sa.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&
-(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),sa.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge",sa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});
-return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),D=d.x+m/2,p=d.y+n/2;d.x-=m;d.y-=n;return function(){a.begin();a.moveTo(D-m/2-n/2,p-n/2+m/2);a.lineTo(D-m/2+n/2,p-n/2-m/2);a.lineTo(D+n/2-3*m/2,p-3*n/2-m/2);a.lineTo(D-n/2-3*m/2,p-3*n/2+m/2);a.close();l?a.fillAndStroke():
-a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Ia);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Ia.apply(this,arguments),D=e*(g+2*k),p=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-
-e*k,m.y-f*k);a.lineTo(m.x-2*D+e*k,m.y-2*p+f*k);a.moveTo(m.x-D-p+f*k,m.y-p+D-e*k);a.lineTo(m.x+p-D-f*k,m.y-p-D+e*k);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),D=d.clone();d.x-=m;d.y-=n;return function(){a.begin();a.moveTo(D.x-n,D.y+m);a.quadTo(d.x-n,d.y+m,d.x,d.y);a.quadTo(d.x+n,d.y-m,D.x+n,D.y-m);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=
-1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var La=function(a,
-b,c){return ya(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-c})},ya=function(a,b,c,d,e){return P(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=d.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/
-g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this,n,h/n,m/n,l,g,d,f)})},qa=function(a){return function(b){return[P(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));
-return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ha=function(a,b,c){return function(d){var e=[P(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,
-Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)},!1)];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(pa(d));return e}},Ba=function(a,b,c,d,e){c=null!=c?c:1;return function(f){var g=[P(f,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,d*(c?1:b.width))),b.getCenterY())},function(a,b,d){a=null!=e&&"0"!=mxUtils.getValue(this.state.style,
-"fixedSize","0")?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));this.state.style.size=a},!1,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(pa(f));return g}},Ka=function(a){return function(b){var c=[P(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},!1,!0)];mxUtils.getValue(b.style,
-mxConstants.STYLE_ROUNDED,!1)&&c.push(pa(b));return c}},xa=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b}},pa=function(a,b){return P(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,
-parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-
-c.x+b.x)/Math.min(b.width,b.height))))})},P=function(a,b,c,d,e,f,g){var h=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);h.execute=function(a){for(var c=0;c<b.length;c++)this.copyStyle(b[c]);g&&g(a)};h.getPosition=c;h.setPosition=d;h.ignoreGrid=null!=e?e:!0;if(f){var k=h.positionChanged;h.positionChanged=function(){k.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return h},Ca={link:function(a){return[La(a,!0,10),La(a,!1,10)]},flexArrow:function(a){var b=
-a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*
-b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<
-b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=
-Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,
-mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
-a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/
-5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
-a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=
-parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(pa(a,c/2))}b.push(P(a,[mxConstants.STYLE_STARTSIZE],function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=
-1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))},!1,null,function(b){if(mxEvent.isControlDown(b.getEvent())&&(b=a.view.graph,b.isTableRow(a.cell)||b.isTableCell(a.cell))){for(var c=b.getSwimlaneDirection(a.style),d=b.model.getParent(a.cell),d=b.model.getChildCells(d,!0),e=[],f=0;f<d.length;f++)d[f]!=a.cell&&b.isSwimlane(d[f])&&b.getSwimlaneDirection(b.getCurrentCellStyle(d[f]))==
-c&&e.push(d[f]);b.setCellStyles(mxConstants.STYLE_STARTSIZE,a.style[mxConstants.STYLE_STARTSIZE],e)}}));return b},label:xa(),ext:xa(),rectangle:xa(),triangle:xa(),rhombus:xa(),umlLifeline:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",F.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[P(a,
-["width","height"],function(a){var b=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",K.prototype.width))),c=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},
-process:function(a){var b=[P(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},cross:function(a){return[P(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"size",ua.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=
-Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[P(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ea.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},dataStorage:function(a){return[P(a,
-["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))},!1)]},callout:function(a){var b=[P(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",t.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",t.prototype.position)));
-mxUtils.getValue(this.state.style,"base",t.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height-b)},function(a,b){mxUtils.getValue(this.state.style,"base",t.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100},!1),P(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",t.prototype.position2)));return new mxPoint(a.x+
-b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100},!1),P(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",t.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",t.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",t.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-
-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",t.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},internalStorage:function(a){var b=[P(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",X.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,
-"dy",X.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},module:function(a){return[P(a,["jettyWidth","jettyHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"jettyWidth",L.prototype.jettyWidth))),c=Math.max(0,Math.min(a.height,
-mxUtils.getValue(this.state.style,"jettyHeight",L.prototype.jettyHeight)));return new mxPoint(a.x+b/2,a.y+2*c)},function(a,b){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y))/2)})]},corner:function(a){return[P(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",Z.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,
-"dy",Z.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},tee:function(a){return[P(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",V.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",V.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,
-b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},singleArrow:qa(1),doubleArrow:qa(.5),folder:function(a){return[P(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,
-"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},document:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
-"size",n.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},tape:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))},!1)]},offPageConnector:function(a){return[P(a,
-["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",S.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},step:Ba(x.prototype.size,!0,null,!0,x.prototype.fixedSize),hexagon:Ba(y.prototype.size,!0,.5,!0),curlyBracket:Ba(u.prototype.size,!1),display:Ba(va.prototype.size,!1),cube:Ha(1,c.prototype.size,!1),card:Ha(.5,k.prototype.size,!0),
-loopLimit:Ha(.5,ba.prototype.size,!0),trapezoid:Ka(.5),parallelogram:Ka(1)};Graph.createHandle=P;Graph.handleFactory=Ca;var Sa=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=Sa.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);
-b=Ca[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Ca[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ca[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Da=new mxPoint(1,0),
-Ea=new mxPoint(1,0),qa=mxUtils.toRadians(-30),Da=mxUtils.getRotatedPoint(Da,Math.cos(qa),Math.sin(qa)),qa=mxUtils.toRadians(-150),Ea=mxUtils.getRotatedPoint(Ea,Math.cos(qa),Math.sin(qa));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));
-var k=Da.x,l=Da.y,m=Ea.x,n=Ea.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=q.x;var d=b-q.y;b=(n*a-m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(q=new mxPoint(q.x+k*b,q.y+l*b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(c&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};var q=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
-mxEdgeStyle.IsometricConnector);var Ta=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ta.apply(this,arguments)};d.prototype.constraints=[];b.prototype.getConstraints=function(a,b,c){a=[];var d=Math.tan(mxUtils.toRadians(30)),e=(.5-d)/2,d=Math.min(b,c/(.5+d));b=(b-d)/2;c=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,b+.5*d,c+d*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+(1-e)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.75*d));return a};t.prototype.getConstraints=function(a,b,c){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-d)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-d)));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
-0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),
-new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,
-0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];wa.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;B.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;e.prototype.getConstraints=
-function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};k.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,
-1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};c.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,.5*(c-d)));return a};g.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};X.prototype.constraints=mxRectangleShape.prototype.constraints;aa.prototype.constraints=mxRectangleShape.prototype.constraints;G.prototype.constraints=mxEllipse.prototype.constraints;
-J.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;za.prototype.constraints=mxEllipse.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;Aa.prototype.constraints=mxRectangleShape.prototype.constraints;va.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};L.prototype.getConstraints=
-function(a,b,c){b=parseFloat(mxUtils.getValue(a,"jettyWidth",L.prototype.jettyWidth))/2;a=parseFloat(mxUtils.getValue(a,"jettyHeight",L.prototype.jettyHeight));var d=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,b),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,
-.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,b),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*a,1.5*a)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*a,3.5*a))];c>5*a&&d.push(new mxConnectionConstraint(new mxPoint(0,
-.75),!1,null,b));c>8*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b));c>15*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,b));return d};ba.prototype.constraints=mxRectangleShape.prototype.constraints;S.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,
-.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,
-0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];Q.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,
-.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,
-.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];h.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,
-0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,
-.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];U.prototype.constraints=
-[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,
-1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
-.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,
-.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;p.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
-0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;V.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,
-"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};Z.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};oa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,
-1),!1)];R.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};ka.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"arrowSize",R.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));return a};ua.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));return a};F.prototype.constraints=null;la.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,
-.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,
-.5),!1)];M.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()}
+e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",t);mxUtils.extend(y,mxActor);y.prototype.size=.2;y.prototype.fixedSize=20;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));
+c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",y);mxUtils.extend(x,mxHexagon);x.prototype.size=.25;x.prototype.fixedSize=20;x.prototype.isRoundable=function(){return!0};x.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,
+Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",x);mxUtils.extend(B,mxRectangleShape);B.prototype.isHtmlAllowed=function(){return!1};
+B.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",B);var Ja=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*
+this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ja.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Ja.apply(this,[a,b,c,d,e]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==
+this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};A.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);
+var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=g){var h=this.style["symbol"+f+"Align"],D=this.style["symbol"+f+"VerticalAlign"],k=this.style["symbol"+f+"Width"],l=this.style["symbol"+f+"Height"],m=this.style["symbol"+f+"Spacing"]||0,fa=this.style["symbol"+f+"VSpacing"]||m,Y=this.style["symbol"+f+"ArcSpacing"];null!=Y&&(Y*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),m+=Y,fa+=Y);var Y=b,n=c,Y=h==mxConstants.ALIGN_CENTER?Y+(d-k)/2:h==mxConstants.ALIGN_RIGHT?Y+
+(d-k-m):Y+m,n=D==mxConstants.ALIGN_MIDDLE?n+(e-l)/2:D==mxConstants.ALIGN_BOTTOM?n+(e-l-fa):n+fa;a.save();h=new g;h.style=this.style;g.prototype.paintVertexShape.call(h,a,Y,n,k,l);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(C,mxCylinder);C.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),
+a.close())};mxCellRenderer.registerShape("message",C);mxUtils.extend(z,mxShape);z.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",z);mxUtils.extend(E,mxShape);E.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/
+6,0,0,0)};E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",E);mxUtils.extend(I,mxEllipse);I.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",
+I);mxUtils.extend(H,mxShape);H.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(N,mxShape);N.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};N.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,
+e/8,d,7*e/8);a.fillAndStroke()};N.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",N);mxUtils.extend(F,mxRectangleShape);F.prototype.size=40;F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};F.prototype.paintBackground=
+function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=F&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};F.prototype.paintForeground=
+function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,f))};mxCellRenderer.registerShape("umlLifeline",F);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
+"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,g=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
+mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+g,c);a.lineTo(b+g,c+Math.max(0,h-1.5*f));a.lineTo(b+Math.max(0,g-f),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=F.prototype.size;
+null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
+mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),
+a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",t.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,d){var e=m.prototype.size;
+null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g)]):(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f,
+g+k),new mxPoint(f+e,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,c,d){var e=p.prototype.size;null!=b&&(e=mxUtils.getValue(b.style,"size",e));var f=a.x,g=a.y,h=a.width,k=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
+b==mxConstants.DIRECTION_EAST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f+e,g),new mxPoint(f+h-e,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k),new mxPoint(f+e,g)]):b==mxConstants.DIRECTION_WEST?(e=h*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g),new mxPoint(f+h-e,g+k),new mxPoint(f+e,g+k),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(e=k*Math.max(0,Math.min(1,e)),g=[new mxPoint(f,g+e),new mxPoint(f+h,g),new mxPoint(f+h,g+k),new mxPoint(f,g+k-e),new mxPoint(f,g+e)]):(e=k*Math.max(0,
+Math.min(1,e)),g=[new mxPoint(f,g),new mxPoint(f+h,g+e),new mxPoint(f+h,g+k-e),new mxPoint(f,g+k),new mxPoint(f,g)]);k=a.getCenterX();a=a.getCenterY();a=new mxPoint(k,a);d&&(c.x<f||c.x>f+h?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(g,a,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?y.prototype.fixedSize:y.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,
+"size",f));e&&(f*=b.view.scale);var g=a.x,h=a.y,k=a.width,D=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(g+k-e,h),new mxPoint(g+k,a),new mxPoint(g+k-e,h+D),new mxPoint(g,h+D),new mxPoint(g+e,a),new mxPoint(g,h)]):b==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,
+f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g+e,h),new mxPoint(g+k,h),new mxPoint(g+k-e,a),new mxPoint(g+k,h+D),new mxPoint(g+e,h+D),new mxPoint(g,a),new mxPoint(g+e,h)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(D,f)):D*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h+e),new mxPoint(l,h),new mxPoint(g+k,h+e),new mxPoint(g+k,h+D),new mxPoint(l,h+D-e),new mxPoint(g,h+D),new mxPoint(g,h+e)]):(e=e?Math.max(0,Math.min(D,f)):D*Math.max(0,Math.min(1,f)),h=[new mxPoint(g,h),new mxPoint(l,h+
+e),new mxPoint(g+k,h),new mxPoint(g+k,h+D-e),new mxPoint(l,h+D),new mxPoint(g,h+D-e),new mxPoint(g,h)]);l=new mxPoint(l,a);d&&(c.x<g||c.x>g+k?l.y=c.y:l.x=c.x);return mxUtils.getPerimeterPoint(h,l,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,c,d){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?x.prototype.fixedSize:x.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));var g=a.x,h=a.y,k=a.width,D=a.height,l=a.getCenterX();
+a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(D,f)):D*Math.max(0,Math.min(1,f)),h=[new mxPoint(l,h),new mxPoint(g+k,h+e),new mxPoint(g+k,h+D-e),new mxPoint(l,h+D),new mxPoint(g,h+D-e),new mxPoint(g,h+e),new mxPoint(l,h)]):(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),h=[new mxPoint(g+e,h),new mxPoint(g+k-e,h),
+new mxPoint(g+k,a),new mxPoint(g+k-e,h+D),new mxPoint(g+e,h+D),new mxPoint(g,a),new mxPoint(g+e,h)]);l=new mxPoint(l,a);d&&(c.x<g||c.x>g+k?l.y=c.y:l.x=c.x);return mxUtils.getPerimeterPoint(h,l,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(U,mxShape);U.prototype.size=10;U.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,c);a.ellipse((d-f)/2,0,f,f);a.fillAndStroke();a.begin();
+a.moveTo(d/2,f);a.lineTo(d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",U);mxUtils.extend(T,mxShape);T.prototype.size=10;T.prototype.inset=2;T.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,c);a.begin();a.moveTo(d/2,f+g);a.lineTo(d/2,e);a.end();a.stroke();a.begin();a.moveTo((d-f)/2-g,f/2);a.quadTo((d-f)/2-g,f+g,d/2,f+g);a.quadTo((d+
+f)/2+g,f+g,(d+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",T);mxUtils.extend(O,mxShape);O.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",O);mxUtils.extend(M,mxShape);M.prototype.inset=2;M.prototype.paintBackground=function(a,b,c,d,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,
+c);a.ellipse(0,f,d-2*f,e-2*f);a.fillAndStroke();a.begin();a.moveTo(d/2,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",M);mxUtils.extend(L,mxCylinder);L.prototype.jettyWidth=20;L.prototype.jettyHeight=10;L.prototype.redrawPath=function(a,b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=Math.min(b,
+e-b),k=Math.min(h+2*b,e-b);f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),a.close());a.end()};mxCellRenderer.registerShape("module",L);mxUtils.extend(Q,mxCylinder);Q.prototype.jettyWidth=32;Q.prototype.jettyHeight=12;Q.prototype.redrawPath=function(a,
+b,c,d,e,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=g/2;var g=c+g/2,h=.3*e-b/2,k=.7*e-b/2;f?(a.moveTo(c,h),a.lineTo(g,h),a.lineTo(g,h+b),a.lineTo(c,h+b),a.moveTo(c,k),a.lineTo(g,k),a.lineTo(g,k+b),a.lineTo(c,k+b)):(a.moveTo(c,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(c,e),a.lineTo(c,k+b),a.lineTo(0,k+b),a.lineTo(0,k),a.lineTo(c,k),a.lineTo(c,h+b),a.lineTo(0,h+b),a.lineTo(0,h),a.lineTo(c,h),
+a.close());a.end()};mxCellRenderer.registerShape("component",Q);mxUtils.extend(ma,mxRectangleShape);ma.prototype.paintForeground=function(a,b,c,d,e){var f=d/2,g=e/2,h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(b+f,c),new mxPoint(b+d,c+g),new mxPoint(b+f,c+e),new mxPoint(b,c+g)],this.isRounded,h,!0);a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",
+ma);mxUtils.extend(ha,mxDoubleEllipse);ha.prototype.outerStroke=!0;ha.prototype.paintVertexShape=function(a,b,c,d,e){var f=Math.min(4,Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",ha);mxUtils.extend(na,ha);na.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",na);mxUtils.extend(ca,mxArrowConnector);ca.prototype.defaultWidth=4;ca.prototype.isOpenEnded=
+function(){return!0};ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ca.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",ca);mxUtils.extend(da,mxArrowConnector);da.prototype.defaultWidth=10;da.prototype.defaultArrowWidth=20;da.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};da.prototype.getEndArrowWidth=
+function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};da.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",da);mxUtils.extend(ea,mxActor);ea.prototype.size=30;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",ea);mxUtils.extend(X,mxRectangleShape);X.prototype.dx=20;X.prototype.dy=20;X.prototype.isHtmlAllowed=function(){return!1};X.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",X);mxUtils.extend(Z,mxActor);Z.prototype.dx=20;Z.prototype.dy=
+20;Z.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};
+mxCellRenderer.registerShape("corner",Z);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",oa);mxUtils.extend(V,mxActor);V.prototype.dx=20;V.prototype.dy=20;V.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
+"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",V);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=
+function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",
+R);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,
+e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ka);mxUtils.extend(aa,mxActor);aa.prototype.size=.1;aa.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",aa);mxUtils.extend(la,
+mxActor);la.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",la);mxUtils.extend(ga,mxActor);ga.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",ga);mxUtils.extend(ba,mxActor);ba.prototype.size=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(a,b,c,d,e){b=
+Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("loopLimit",ba);mxUtils.extend(S,mxActor);S.prototype.size=.375;S.prototype.isRoundable=function(){return!0};S.prototype.redrawPath=function(a,b,
+c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",S);mxUtils.extend(G,mxEllipse);G.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);
+a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",G);mxUtils.extend(J,mxEllipse);J.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",J);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=
+function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",ia);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+
+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(W,mxEllipse);W.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",W);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,
+c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",ra);mxUtils.extend(wa,mxEllipse);wa.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);if(null!=this.style){var f=a.pointerEvents;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||
+null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1);a.rect(b,c,d,e);a.fill();a.pointerEvents=f;a.setStrokeColor(this.stroke);a.begin();a.moveTo(b,c);"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c);"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e);"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(b,c+e):a.moveTo(b,c+e);"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(b,c);a.end();a.stroke()}};mxCellRenderer.registerShape("partialRectangle",
+wa);mxUtils.extend(za,mxEllipse);za.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",za);mxUtils.extend(Aa,mxActor);Aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);
+a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",Aa);mxUtils.extend(ua,mxActor);ua.prototype.size=.2;ua.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();
+a.end()};mxCellRenderer.registerShape("cross",ua);mxUtils.extend(va,mxActor);va.prototype.size=.25;va.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",va);mxUtils.extend(sa,mxConnector);sa.prototype.origPaintEdgeShape=sa.prototype.paintEdgeShape;
+sa.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;sa.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),sa.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge",sa);"undefined"!==typeof StyleFormatPanel&&function(){var a=
+StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("box",
+function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),D=d.x+m/2,p=d.y+n/2;d.x-=m;d.y-=n;return function(){a.begin();a.moveTo(D-m/2-n/2,p-n/2+m/2);a.lineTo(D-m/2+n/2,p-n/2-m/2);a.lineTo(D+n/2-3*m/2,p-3*n/2-m/2);a.lineTo(D-n/2-3*m/2,p-3*n/2+m/2);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-m/2-n/2,d.y-n/2+m/2);a.lineTo(d.x+n/2-3*m/2,d.y-3*n/2-m/2);a.moveTo(d.x-m/2+n/2,d.y-
+n/2-m/2);a.lineTo(d.x-n/2-3*m/2,d.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Ia);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,l){var m=d.clone(),n=Ia.apply(this,arguments),D=e*(g+2*k),p=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*D+e*k,m.y-2*p+f*k);a.moveTo(m.x-D-p+f*k,m.y-p+D-e*k);a.lineTo(m.x+p-D-f*k,m.y-p-D+e*k);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,c,d,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+
+k+1),D=d.clone();d.x-=m;d.y-=n;return function(){a.begin();a.moveTo(D.x-n,D.y+m);a.quadTo(d.x-n,d.y+m,d.x,d.y);a.quadTo(d.x+n,d.y-m,D.x+n,D.y-m);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,l){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var m=d.clone();m.x-=b;m.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",
+function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var La=function(a,b,c){return ya(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=
+Math.round(2*b)/a.view.scale-c})},ya=function(a,b,c,d,e){return P(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=d.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this,
+n,h/n,m/n,l,g,d,f)})},qa=function(a){return function(b){return[P(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,
+Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ha=function(a,b,c){return function(d){var e=[P(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)},!1)];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(pa(d));return e}},Ba=function(a,b,c,d,e){c=null!=
+c?c:1;return function(f){var g=[P(f,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,d*(c?1:b.width))),b.getCenterY())},function(a,b,d){a=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));this.state.style.size=a},!1,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&
+g.push(pa(f));return g}},Ka=function(a){return function(b){var c=[P(b,["size"],function(b){var c=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(b.x+c*b.width*.75,b.y+b.height/4)},function(b,c){this.state.style.size=Math.max(0,Math.min(a,(c.x-b.x)/(.75*b.width)))},!1,!0)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(pa(b));return c}},xa=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,
+!1)&&b.push(pa(a));return b}},pa=function(a,b){return P(a,[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/
+2,c.height/2),Math.min(c.width,c.height)*e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-c.x+b.x)/Math.min(b.width,b.height))))})},P=function(a,b,c,d,e,f,g){var h=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);h.execute=function(a){for(var c=
+0;c<b.length;c++)this.copyStyle(b[c]);g&&g(a)};h.getPosition=c;h.setPosition=d;h.ignoreGrid=null!=e?e:!0;if(f){var k=h.positionChanged;h.positionChanged=function(){k.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return h},Ca={link:function(a){return[La(a,!0,10),La(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,
+mxConstants.STYLE_ENDSIZE],!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*
+(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(b,c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/
+3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-
+parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*
+a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<
+b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=
+Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-
+parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(pa(a,c/2))}b.push(P(a,[mxConstants.STYLE_STARTSIZE],
+function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,
+Math.min(b.width,c.x-b.x)))},!1,null,function(b){if(mxEvent.isControlDown(b.getEvent())&&(b=a.view.graph,b.isTableRow(a.cell)||b.isTableCell(a.cell))){for(var c=b.getSwimlaneDirection(a.style),d=b.model.getParent(a.cell),d=b.model.getChildCells(d,!0),e=[],f=0;f<d.length;f++)d[f]!=a.cell&&b.isSwimlane(d[f])&&b.getSwimlaneDirection(b.getCurrentCellStyle(d[f]))==c&&e.push(d[f]);b.setCellStyles(mxConstants.STYLE_STARTSIZE,a.style[mxConstants.STYLE_STARTSIZE],e)}}));return b},label:xa(),ext:xa(),rectangle:xa(),
+triangle:xa(),rhombus:xa(),umlLifeline:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",F.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[P(a,["width","height"],function(a){var b=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",K.prototype.width))),
+c=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[P(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",q.prototype.size))));
+return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},cross:function(a){return[P(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",ua.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=
+Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[P(a,["size"],
+function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ea.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},dataStorage:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(a.x+
+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))},!1)]},callout:function(a){var b=[P(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",t.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",t.prototype.position)));mxUtils.getValue(this.state.style,"base",t.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height-b)},function(a,b){mxUtils.getValue(this.state.style,
+"base",t.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100},!1),P(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",t.prototype.position2)));return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100},!1),P(a,["base"],function(a){var b=
+Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",t.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",t.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",t.prototype.base)));return new mxPoint(a.x+Math.min(a.width,c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",t.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,
+b.x-a.x-c*a.width)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},internalStorage:function(a){var b=[P(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",X.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",X.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,
+Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(pa(a));return b},module:function(a){return[P(a,["jettyWidth","jettyHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"jettyWidth",L.prototype.jettyWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"jettyHeight",L.prototype.jettyHeight)));return new mxPoint(a.x+b/2,a.y+2*c)},function(a,b){this.state.style.jettyWidth=Math.round(2*Math.max(0,
+Math.min(a.width,b.x-a.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y))/2)})]},corner:function(a){return[P(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",Z.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",Z.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,
+Math.min(a.height,b.y-a.y)))},!1)]},tee:function(a){return[P(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",V.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",V.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},singleArrow:qa(1),
+doubleArrow:qa(.5),folder:function(a){return[P(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",g.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",g.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,
+"tabPosition",g.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},document:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},
+!1)]},tape:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))},!1)]},offPageConnector:function(a){return[P(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",S.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*
+a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},step:Ba(y.prototype.size,!0,null,!0,y.prototype.fixedSize),hexagon:Ba(x.prototype.size,!0,.5,!0,x.prototype.fixedSize),curlyBracket:Ba(u.prototype.size,!1),display:Ba(va.prototype.size,!1),cube:Ha(1,c.prototype.size,!1),card:Ha(.5,k.prototype.size,!0),loopLimit:Ha(.5,ba.prototype.size,!0),trapezoid:Ka(.5),parallelogram:Ka(1)};Graph.createHandle=P;Graph.handleFactory=Ca;var Sa=mxVertexHandler.prototype.createCustomHandles;
+mxVertexHandler.prototype.createCustomHandles=function(){var a=Sa.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);b=Ca[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Ca[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=
+null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ca[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Da=new mxPoint(1,0),Ea=new mxPoint(1,0),qa=mxUtils.toRadians(-30),Da=mxUtils.getRotatedPoint(Da,Math.cos(qa),Math.sin(qa)),qa=mxUtils.toRadians(-150),Ea=mxUtils.getRotatedPoint(Ea,
+Math.cos(qa),Math.sin(qa));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));var k=Da.x,l=Da.y,m=Ea.x,n=Ea.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=r.x;var d=b-r.y;b=(n*a-
+m*d)/(k*n-l*m);a=(l*a-k*d)/(l*m-k*n);p?(c&&(r=new mxPoint(r.x+k*b,r.y+l*b),e.push(r)),r=new mxPoint(r.x+m*a,r.y+n*a)):(c&&(r=new mxPoint(r.x+m*a,r.y+n*a),e.push(r)),r=new mxPoint(r.x+k*b,r.y+l*b));e.push(r)};var r=h;null==d&&(d=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(d.x,d.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Ta=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var c=
+new mxElbowEdgeHandler(a);c.snapToTerminals=!1;return c}return Ta.apply(this,arguments)};d.prototype.constraints=[];b.prototype.getConstraints=function(a,b,c){a=[];var d=Math.tan(mxUtils.toRadians(30)),e=(.5-d)/2,d=Math.min(b,c/(.5+d));b=(b-d)/2;c=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+d*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+d,c+.25*d));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,b+d,c+.75*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*d,c+(1-e)*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c+.75*d));return a};t.prototype.getConstraints=function(a,b,c){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-d)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
+b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-d)));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
+0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
+1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];wa.prototype.constraints=mxRectangleShape.prototype.constraints;
+mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;B.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;e.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};k.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};c.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-d)));return a};g.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
+b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,
+1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};X.prototype.constraints=mxRectangleShape.prototype.constraints;aa.prototype.constraints=mxRectangleShape.prototype.constraints;G.prototype.constraints=mxEllipse.prototype.constraints;J.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;za.prototype.constraints=mxEllipse.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;Aa.prototype.constraints=
+mxRectangleShape.prototype.constraints;va.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,
+.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};L.prototype.getConstraints=function(a,b,c){b=parseFloat(mxUtils.getValue(a,"jettyWidth",L.prototype.jettyWidth))/2;a=parseFloat(mxUtils.getValue(a,"jettyHeight",L.prototype.jettyHeight));var d=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,b),new mxConnectionConstraint(new mxPoint(.25,
+0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,b),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),
+!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*a,1.5*a)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*a,3.5*a))];c>5*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,b));c>8*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,b));c>15*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,b));return d};ba.prototype.constraints=mxRectangleShape.prototype.constraints;S.prototype.constraints=
+mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
+.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,
+1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];Q.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,
+1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,
+1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];h.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,
+1),!1)];l.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),
+!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
+.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];U.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=
+[new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,
+.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,
+.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,
+.25),!1)];m.prototype.constraints=mxRectangleShape.prototype.constraints;p.prototype.constraints=mxRectangleShape.prototype.constraints;n.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),
+!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;V.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,
+0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};Z.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,
+"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return a};oa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
+1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];R.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,c-d));return a};ka.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};ua.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,
+1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));return a};F.prototype.constraints=
+null;la.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,
+.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];O.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];M.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()}
Actions.prototype.init=function(){function a(a){b.escape();a=b.deleteCells(b.getDeletableCells(b.getSelectionCells()),a);null!=a&&b.setSelectionCells(a)}var c=this.editorUi,d=c.editor,b=d.graph,f=function(){return Action.prototype.isEnabled.apply(this,arguments)&&b.isEnabled()};this.addAction("new...",function(){b.openLink(c.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";c.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey=
"import";window.openFile=new OpenFile(mxUtils.bind(this,function(){c.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var c=mxUtils.parseXml(a);d.graph.setSelectionCells(d.graph.importGraphModel(c.documentElement))}catch(n){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+n.message)}}));c.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=f;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+
"+S").isEnabled=f;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=f;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,296,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",function(){c.showDialog((new PageSetupDialog(c)).container,320,220,!0,!0)}).isEnabled=f;this.addAction("print...",function(){c.showDialog((new PrintDialog(c)).container,
300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(b,null,10,10)});this.addAction("undo",function(){c.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){c.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){mxClipboard.cut(b)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{mxClipboard.copy(b)}catch(g){c.handleError(g)}},
-null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&mxClipboard.paste(b)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){b.getModel().beginUpdate();try{var c=mxClipboard.paste(b);if(null!=c){a=!0;for(var d=0;d<c.length&&a;d++)a=a&&b.model.isEdge(c[d]);var e=b.view.translate,f=b.view.scale,g=e.x,h=e.y,e=null;if(1==c.length&&a){var q=b.getCellGeometry(c[0]);
-null!=q&&(e=q.getTerminalPoint(!0))}e=null!=e?e:b.getBoundingBoxFromGeometry(c,a);if(null!=e){var v=Math.round(b.snap(b.popupMenuHandler.triggerX/f-g)),r=Math.round(b.snap(b.popupMenuHandler.triggerY/f-h));b.cellsMoved(c,v-e.x,r-e.y)}}}finally{b.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=b.getSelectionCell();b.isEnabled()&&null!=a&&b.getModel().isVertex(a)&&(a=b.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shift+X");
+null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&mxClipboard.paste(b)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){b.getModel().beginUpdate();try{var c=mxClipboard.paste(b);if(null!=c){a=!0;for(var d=0;d<c.length&&a;d++)a=a&&b.model.isEdge(c[d]);var e=b.view.translate,f=b.view.scale,g=e.x,h=e.y,e=null;if(1==c.length&&a){var r=b.getCellGeometry(c[0]);
+null!=r&&(e=r.getTerminalPoint(!0))}e=null!=e?e:b.getBoundingBoxFromGeometry(c,a);if(null!=e){var v=Math.round(b.snap(b.popupMenuHandler.triggerX/f-g)),q=Math.round(b.snap(b.popupMenuHandler.triggerY/f-h));b.cellsMoved(c,v-e.x,q-e.y)}}}finally{b.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=b.getSelectionCell();b.isEnabled()&&null!=a&&b.getModel().isVertex(a)&&(a=b.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shift+X");
this.addAction("pasteSize",function(a){if(b.isEnabled()&&!b.isSelectionEmpty()&&null!=c.copiedSize){b.getModel().beginUpdate();try{var d=b.getSelectionCells();for(a=0;a<d.length;a++)if(b.getModel().isVertex(d[a])){var e=b.getCellGeometry(d[a]);null!=e&&(e=e.clone(),e.width=c.copiedSize.width,e.height=c.copiedSize.height,b.getModel().setGeometry(d[a],e))}}finally{b.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");
this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{b.setSelectionCells(b.duplicateCells()),b.scrollCellToVisible(b.getSelectionCell())}catch(g){c.handleError(g)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(a){b.turnShapes(b.getSelectionCells(),null!=a?mxEvent.isShiftDown(a):!1)},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",function(){b.selectVertices(null,
!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){b.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){b.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){b.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!b.isSelectionEmpty()){b.getModel().beginUpdate();try{var a=b.isCellMovable(b.getSelectionCell())?1:0;b.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -3480,8 +3482,8 @@ b)})));this.put("file",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItem
Menus.prototype.addMenu=function(a,c,d){var b=this.get(a);null!=b&&(c.showDisabled||b.isEnabled())&&this.get(a).execute(c,d)};
Menus.prototype.addInsertTableCellItem=function(a,c){var d=this.editorUi.editor.graph;this.addInsertTableItem(a,mxUtils.bind(this,function(a,c,e){c=mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)?d.createCrossFunctionalSwimlane(c,e):d.createTable(c,e,null,null,mxEvent.isShiftDown(a)?"Table":null);a=mxEvent.isAltDown(a)?d.getFreeInsertPoint():d.getCenterInsertPoint(d.getBoundingBoxFromGeometry([c],!0));a=d.importCells([c],a.x,a.y);null!=a&&0<a.length&&(d.scrollCellToVisible(a[0]),d.setSelectionCells(a))}),
c)};
-Menus.prototype.addInsertTableItem=function(a,c,d){function b(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}function f(a){g=e.getParentByName(mxEvent.getSource(a),"TD");var b=!1;if(null!=g){h=e.getParentByName(g,"TR");for(var c=mxEvent.isMouseEvent(a)?2:4,d=l,f=Math.min(20,h.sectionRowIndex+c),c=Math.min(20,g.cellIndex+c),m=d.rows.length;m<f;m++)for(var w=d.insertRow(m),t=0;t<d.rows[0].cells.length;t++){var x=w.insertCell(-1);
-mxClient.IS_QUIRKS&&(x.innerHTML=k)}for(m=0;m<d.rows.length;m++)for(w=d.rows[m],t=w.cells.length;t<c;t++)x=w.insertCell(-1),mxClient.IS_QUIRKS&&(x.innerHTML=k);n.innerHTML=g.cellIndex+1+"x"+(h.sectionRowIndex+1);for(d=0;d<l.rows.length;d++)for(f=l.rows[d],c=0;c<f.cells.length;c++)m=f.cells[c],d==h.sectionRowIndex&&c==g.cellIndex&&(b="blue"==m.style.backgroundColor),m.style.backgroundColor=d<=h.sectionRowIndex&&c<=g.cellIndex?"blue":"transparent"}mxEvent.consume(a);return b}c=null!=c?c:mxUtils.bind(this,
+Menus.prototype.addInsertTableItem=function(a,c,d){function b(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}function f(a){g=e.getParentByName(mxEvent.getSource(a),"TD");var b=!1;if(null!=g){h=e.getParentByName(g,"TR");for(var c=mxEvent.isMouseEvent(a)?2:4,d=l,f=Math.min(20,h.sectionRowIndex+c),c=Math.min(20,g.cellIndex+c),m=d.rows.length;m<f;m++)for(var w=d.insertRow(m),t=0;t<d.rows[0].cells.length;t++){var y=w.insertCell(-1);
+mxClient.IS_QUIRKS&&(y.innerHTML=k)}for(m=0;m<d.rows.length;m++)for(w=d.rows[m],t=w.cells.length;t<c;t++)y=w.insertCell(-1),mxClient.IS_QUIRKS&&(y.innerHTML=k);n.innerHTML=g.cellIndex+1+"x"+(h.sectionRowIndex+1);for(d=0;d<l.rows.length;d++)for(f=l.rows[d],c=0;c<f.cells.length;c++)m=f.cells[c],d==h.sectionRowIndex&&c==g.cellIndex&&(b="blue"==m.style.backgroundColor),m.style.backgroundColor=d<=h.sectionRowIndex&&c<=g.cellIndex?"blue":"transparent"}mxEvent.consume(a);return b}c=null!=c?c:mxUtils.bind(this,
function(a,c,d){var e=this.editorUi.editor.graph;a=e.getParentByName(mxEvent.getSource(a),"TD");if(null!=a&&null!=e.cellEditor.textarea){e.getParentByName(a,"TR");var f=e.cellEditor.textarea.getElementsByTagName("table");a=[];for(var g=0;g<f.length;g++)a.push(f[g]);e.container.focus();e.pasteHtmlAtCaret(b(c,d));c=e.cellEditor.textarea.getElementsByTagName("table");if(c.length==a.length+1)for(g=c.length-1;0<=g;g--)if(0==g||c[g]!=a[g-1]){e.selectNode(c[g].rows[0].cells[0]);break}}});var e=this.editorUi.editor.graph,
h=null,g=null;a=a.addItem("",null,null,d,null,null,null,!0);var k='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var l=function(a,b){var c=document.createElement("table");c.setAttribute("border","1");c.style.borderCollapse="collapse";c.style.borderStyle="solid";mxClient.IS_QUIRKS||c.setAttribute("cellPadding","8");for(var d=0;d<a;d++)for(var e=c.insertRow(d),f=0;f<b;f++){var g=e.insertCell(-1);mxClient.IS_QUIRKS&&(g.innerHTML=k)}return c}(5,
5);a.firstChild.appendChild(l);var n=document.createElement("div");n.style.padding="4px";n.style.fontSize=Menus.prototype.defaultFontSize+"px";n.innerHTML="1x1";a.firstChild.appendChild(n);mxEvent.addGestureListeners(l,null,null,mxUtils.bind(this,function(a){var b=f(a);null!=g&&null!=h&&b&&(c(a,h.sectionRowIndex+1,g.cellIndex+1),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(l,"mouseover",f)};
@@ -3568,44 +3570,44 @@ null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"non
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var c=this.editorUi.editor.graph;c.getModel().beginUpdate();try{c.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=c&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var d=document.createElement("h3");mxUtils.write(d,mxResources.get("about")+" GraphEditor");c.appendChild(d);d=document.createElement("img");d.style.border="0px";d.setAttribute("width","176");d.setAttribute("width","151");d.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(d);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);d=document.createElement("a");d.setAttribute("href",
-"http://www.jgraph.com/");d.setAttribute("target","_blank");mxUtils.write(d,"www.jgraph.com");c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});d.className="geBtn gePrimaryBtn";c.appendChild(d);this.container=c},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,n,m,p,u){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var q,v,r=document.createElement("table"),w=document.createElement("tbody");q=document.createElement("tr");v=document.createElement("td");
-v.style.fontSize="10pt";v.style.width="100px";mxUtils.write(v,c);q.appendChild(v);w.appendChild(q);q=document.createElement("tr");v=document.createElement("td");var t=document.createElement("textarea");n&&t.setAttribute("wrap","off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();
-t.scrollTop=0};v.appendChild(t);q.appendChild(v);w.appendChild(q);q=document.createElement("tr");v=document.createElement("td");v.style.paddingTop="14px";v.style.whiteSpace="nowrap";v.setAttribute("align","right");null!=p&&(c=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(p)}),c.className="geBtn",v.appendChild(c));if(null!=u)for(c=0;c<u.length;c++)(function(a,b){var c=mxUtils.button(a,function(a){b(a,t)});c.className="geBtn";v.appendChild(c)})(u[c][0],u[c][1]);e=mxUtils.button(e||
-mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});e.className="geBtn";a.editor.cancelFirst&&v.appendChild(e);null!=k&&k(v,t);null!=b&&(k=mxUtils.button(m||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",v.appendChild(k));a.editor.cancelFirst||v.appendChild(e);q.appendChild(v);w.appendChild(q);r.appendChild(w);this.container=r},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign="right";var d=document.createElement("textarea");
+"http://www.jgraph.com/");d.setAttribute("target","_blank");mxUtils.write(d,"www.jgraph.com");c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});d.className="geBtn gePrimaryBtn";c.appendChild(d);this.container=c},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,n,m,p,u){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var r,v,q=document.createElement("table"),w=document.createElement("tbody");r=document.createElement("tr");v=document.createElement("td");
+v.style.fontSize="10pt";v.style.width="100px";mxUtils.write(v,c);r.appendChild(v);w.appendChild(r);r=document.createElement("tr");v=document.createElement("td");var t=document.createElement("textarea");n&&t.setAttribute("wrap","off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();
+t.scrollTop=0};v.appendChild(t);r.appendChild(v);w.appendChild(r);r=document.createElement("tr");v=document.createElement("td");v.style.paddingTop="14px";v.style.whiteSpace="nowrap";v.setAttribute("align","right");null!=p&&(c=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(p)}),c.className="geBtn",v.appendChild(c));if(null!=u)for(c=0;c<u.length;c++)(function(a,b){var c=mxUtils.button(a,function(a){b(a,t)});c.className="geBtn";v.appendChild(c)})(u[c][0],u[c][1]);e=mxUtils.button(e||
+mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});e.className="geBtn";a.editor.cancelFirst&&v.appendChild(e);null!=k&&k(v,t);null!=b&&(k=mxUtils.button(m||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",v.appendChild(k));a.editor.cancelFirst||v.appendChild(e);r.appendChild(v);w.appendChild(r);q.appendChild(w);this.container=q},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign="right";var d=document.createElement("textarea");
d.setAttribute("wrap","off");d.setAttribute("spellcheck","false");d.setAttribute("autocorrect","off");d.setAttribute("autocomplete","off");d.setAttribute("autocapitalize","off");d.style.overflow="auto";d.style.resize="none";d.style.width="600px";d.style.height="360px";d.style.marginBottom="16px";d.value=mxUtils.getPrettyXml(a.editor.getGraphXml());c.appendChild(d);this.init=function(){d.focus()};Graph.fileSupport&&(d.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},
!1),d.addEventListener("drop",function(b){b.stopPropagation();b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var c=new FileReader;c.onload=function(a){d.value=a.target.result};c.readAsText(b)}else d.value=a.extractGraphModelFromEvent(b)},!1));var b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);var f=document.createElement("select");f.style.width="180px";f.className="geBtn";if(a.editor.graph.isEnabled()){var e=
document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));f.appendChild(e)}e=document.createElement("option");e.setAttribute("value","new");mxUtils.write(e,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&f.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),f.appendChild(e));c.appendChild(f);
e=mxUtils.button(mxResources.get("ok"),function(){var b=Graph.zapGremlins(mxUtils.trim(d.value)),c=null;if("new"==f.value)a.hideDialog(),a.editor.editAsNew(b);else if("replace"==f.value){a.editor.graph.model.beginUpdate();try{a.editor.setGraphXml(mxUtils.parseXml(b).documentElement),a.hideDialog()}catch(m){c=m}finally{a.editor.graph.model.endUpdate()}}else if("import"==f.value){a.editor.graph.model.beginUpdate();try{var e=mxUtils.parseXml(b),l=new mxGraphModel;(new mxCodec(e)).decode(e.documentElement,
l);var n=l.getChildren(l.getChildAt(l.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(n));a.hideDialog()}catch(m){c=m}finally{a.editor.graph.model.endUpdate()}}null!=c&&mxUtils.alert(c.message)});e.className="geBtn gePrimaryBtn";c.appendChild(e);a.editor.cancelFirst||c.appendChild(b);this.container=c};EditDiagramDialog.showNewWindowOption=!0;
-var ExportDialog=function(a){function c(){var a=n.value,b=a.lastIndexOf(".");n.value=0<b?a.substring(0,b+1)+m.value:a+"."+m.value;"xml"===m.value?(p.setAttribute("disabled","true"),u.setAttribute("disabled","true"),q.setAttribute("disabled","true"),x.setAttribute("disabled","true")):(p.removeAttribute("disabled"),u.removeAttribute("disabled"),q.removeAttribute("disabled"),x.removeAttribute("disabled"));"png"===m.value||"svg"===m.value||"pdf"===m.value?t.removeAttribute("disabled"):t.setAttribute("disabled",
-"disabled");"png"===m.value?(v.removeAttribute("disabled"),r.removeAttribute("disabled")):(v.setAttribute("disabled","disabled"),r.setAttribute("disabled","disabled"))}function d(){u.style.backgroundColor=u.value*q.value>MAX_AREA||0>=u.value?"red":"";q.style.backgroundColor=u.value*q.value>MAX_AREA||0>=q.value?"red":""}var b=a.editor.graph,f=b.getGraphBounds(),e=b.view.scale,h=Math.ceil(f.width/e),g=Math.ceil(f.height/e),k,e=document.createElement("table"),l=document.createElement("tbody");e.setAttribute("cellpadding",
+var ExportDialog=function(a){function c(){var a=n.value,b=a.lastIndexOf(".");n.value=0<b?a.substring(0,b+1)+m.value:a+"."+m.value;"xml"===m.value?(p.setAttribute("disabled","true"),u.setAttribute("disabled","true"),r.setAttribute("disabled","true"),y.setAttribute("disabled","true")):(p.removeAttribute("disabled"),u.removeAttribute("disabled"),r.removeAttribute("disabled"),y.removeAttribute("disabled"));"png"===m.value||"svg"===m.value||"pdf"===m.value?t.removeAttribute("disabled"):t.setAttribute("disabled",
+"disabled");"png"===m.value?(v.removeAttribute("disabled"),q.removeAttribute("disabled")):(v.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"))}function d(){u.style.backgroundColor=u.value*r.value>MAX_AREA||0>=u.value?"red":"";r.style.backgroundColor=u.value*r.value>MAX_AREA||0>=r.value?"red":""}var b=a.editor.graph,f=b.getGraphBounds(),e=b.view.scale,h=Math.ceil(f.width/e),g=Math.ceil(f.height/e),k,e=document.createElement("table"),l=document.createElement("tbody");e.setAttribute("cellpadding",
mxClient.IS_SF?"0":"2");f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";k.style.width="100px";mxUtils.write(k,mxResources.get("filename")+":");f.appendChild(k);var n=document.createElement("input");n.setAttribute("value",a.editor.getOrCreateFilename());n.style.width="180px";k=document.createElement("td");k.appendChild(n);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("format")+
":");f.appendChild(k);var m=document.createElement("select");m.style.width="180px";k=document.createElement("option");k.setAttribute("value","png");mxUtils.write(k,mxResources.get("formatPng"));m.appendChild(k);k=document.createElement("option");ExportDialog.showGifOption&&(k.setAttribute("value","gif"),mxUtils.write(k,mxResources.get("formatGif")),m.appendChild(k));k=document.createElement("option");k.setAttribute("value","jpg");mxUtils.write(k,mxResources.get("formatJpg"));m.appendChild(k);k=document.createElement("option");
k.setAttribute("value","pdf");mxUtils.write(k,mxResources.get("formatPdf"));m.appendChild(k);k=document.createElement("option");k.setAttribute("value","svg");mxUtils.write(k,mxResources.get("formatSvg"));m.appendChild(k);ExportDialog.showXmlOption&&(k=document.createElement("option"),k.setAttribute("value","xml"),mxUtils.write(k,mxResources.get("formatXml")),m.appendChild(k));k=document.createElement("td");k.appendChild(m);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");
k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("zoom")+" (%):");f.appendChild(k);var p=document.createElement("input");p.setAttribute("type","number");p.setAttribute("value","100");p.style.width="180px";k=document.createElement("td");k.appendChild(p);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("width")+":");f.appendChild(k);var u=document.createElement("input");u.setAttribute("value",
-h);u.style.width="180px";k=document.createElement("td");k.appendChild(u);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("height")+":");f.appendChild(k);var q=document.createElement("input");q.setAttribute("value",g);q.style.width="180px";k=document.createElement("td");k.appendChild(q);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize=
+h);u.style.width="180px";k=document.createElement("td");k.appendChild(u);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("height")+":");f.appendChild(k);var r=document.createElement("input");r.setAttribute("value",g);r.style.width="180px";k=document.createElement("td");k.appendChild(r);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize=
"10pt";mxUtils.write(k,mxResources.get("dpi")+":");f.appendChild(k);var v=document.createElement("select");v.style.width="180px";k=document.createElement("option");k.setAttribute("value","100");mxUtils.write(k,"100dpi");v.appendChild(k);k=document.createElement("option");k.setAttribute("value","200");mxUtils.write(k,"200dpi");v.appendChild(k);k=document.createElement("option");k.setAttribute("value","300");mxUtils.write(k,"300dpi");v.appendChild(k);k=document.createElement("option");k.setAttribute("value",
-"400");mxUtils.write(k,"400dpi");v.appendChild(k);k=document.createElement("option");k.setAttribute("value","custom");mxUtils.write(k,mxResources.get("custom"));v.appendChild(k);var r=document.createElement("input");r.style.width="180px";r.style.display="none";r.setAttribute("value","100");r.setAttribute("type","number");r.setAttribute("min","50");r.setAttribute("step","50");var w=!1;mxEvent.addListener(v,"change",function(){"custom"==this.value?(this.style.display="none",r.style.display="",r.focus()):
-(r.value=this.value,w||(p.value=this.value))});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value);isNaN(a)||0>=a?r.style.backgroundColor="red":(r.style.backgroundColor="",w||(p.value=a))});k=document.createElement("td");k.appendChild(v);k.appendChild(r);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("background")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type",
-"checkbox");t.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(t);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("value",ExportDialog.lastBorderValue);x.style.width="180px";
-k=document.createElement("td");k.appendChild(x);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(m,"change",c);c();mxEvent.addListener(p,"change",function(){w=!0;var a=Math.max(0,parseFloat(p.value)||100)/100;p.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),q.value=Math.floor(g*a)):(p.value="100",u.value=h,q.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(p.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(g*a)):
-(p.value="100",u.value=h,q.value=g);d()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/g;0<a?(p.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(p.value="100",u.value=h,q.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var y=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(p.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c=
-n.value,d=m.value,e=Math.max(0,parseFloat(p.value)||100)/100,f=Math.max(0,parseInt(x.value)),g=b.background,h=Math.max(1,parseInt(r.value));if(("svg"==d||"png"==d||"pdf"==d)&&t.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,c,d,g,e,f,h)}}));y.className="geBtn gePrimaryBtn";var B=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});B.className="geBtn";a.editor.cancelFirst?(k.appendChild(B),k.appendChild(y)):(k.appendChild(y),
+"400");mxUtils.write(k,"400dpi");v.appendChild(k);k=document.createElement("option");k.setAttribute("value","custom");mxUtils.write(k,mxResources.get("custom"));v.appendChild(k);var q=document.createElement("input");q.style.width="180px";q.style.display="none";q.setAttribute("value","100");q.setAttribute("type","number");q.setAttribute("min","50");q.setAttribute("step","50");var w=!1;mxEvent.addListener(v,"change",function(){"custom"==this.value?(this.style.display="none",q.style.display="",q.focus()):
+(q.value=this.value,w||(p.value=this.value))});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value);isNaN(a)||0>=a?q.style.backgroundColor="red":(q.style.backgroundColor="",w||(p.value=a))});k=document.createElement("td");k.appendChild(v);k.appendChild(q);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("background")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type",
+"checkbox");t.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(t);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var y=document.createElement("input");y.setAttribute("type","number");y.setAttribute("value",ExportDialog.lastBorderValue);y.style.width="180px";
+k=document.createElement("td");k.appendChild(y);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(m,"change",c);c();mxEvent.addListener(p,"change",function(){w=!0;var a=Math.max(0,parseFloat(p.value)||100)/100;p.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),r.value=Math.floor(g*a)):(p.value="100",u.value=h,r.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(p.value=parseFloat((100*a).toFixed(2)),r.value=Math.floor(g*a)):
+(p.value="100",u.value=h,r.value=g);d()});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value)/g;0<a?(p.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(p.value="100",u.value=h,r.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var x=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(p.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c=
+n.value,d=m.value,e=Math.max(0,parseFloat(p.value)||100)/100,f=Math.max(0,parseInt(y.value)),g=b.background,h=Math.max(1,parseInt(q.value));if(("svg"==d||"png"==d||"pdf"==d)&&t.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,c,d,g,e,f,h)}}));x.className="geBtn gePrimaryBtn";var B=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});B.className="geBtn";a.editor.cancelFirst?(k.appendChild(B),k.appendChild(x)):(k.appendChild(x),
k.appendChild(B));f.appendChild(k);l.appendChild(f);e.appendChild(l);this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
ExportDialog.exportFile=function(a,c,d,b,f,e,h){var g=a.editor.graph;if("xml"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,d);else if("svg"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(g.getSvg(b,f,e)),c,d);else{var k=g.getGraphBounds(),l=mxUtils.createXmlDocument(),n=l.createElement("output");l.appendChild(n);l=new mxXmlCanvas2D(n);l.translate(Math.floor((e/f-k.x)/g.view.scale),Math.floor((e/f-k.y)/g.view.scale));l.scale(f/g.view.scale);(new mxImageExport).drawState(g.getView().getState(g.model.root),
l);n="xml="+encodeURIComponent(mxUtils.getXml(n));l=Math.ceil(k.width*f/g.view.scale+2*e);f=Math.ceil(k.height*f/g.view.scale+2*e);n.length<=MAX_REQUEST_SIZE&&l*f<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+d+"&filename="+encodeURIComponent(c)+"&bg="+(null!=b?b:"none")+"&w="+l+"&h="+f+"&"+n+"&dpi="+h)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,c,d,b){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(d)+"&format="+b)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
var EditDataDialog=function(a,c){function d(){0<w.value.length?t.removeAttribute("disabled"):t.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],n=[],m=0,p=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,
c):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin=
-"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){n[c]=null;g.table.deleteRow(b+(null!=p?1:0));break}null!=n[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;n[a]=g.addTextarea(l[m]+":",c,2);n[a].style.width="100%";0<c.indexOf("\n")&&n[a].setAttribute("rows","2");u(n[a],b)},q=[],v=f.getModel().getParent(c)==
-f.getModel().getRoot(),r=0;r<k.length;r++)!v&&"label"==k[r].nodeName||"placeholders"==k[r].nodeName||q.push({name:k[r].nodeName,value:k[r].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=p&&(k=document.createElement("div"),k.style.width="100%",k.style.fontSize="11px",k.style.textAlign="center",mxUtils.write(k,p),g.addField(mxResources.get("id")+":",k));for(r=0;r<q.length;r++)h(m,q[r].name,q[r].value),m++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;";
-h.appendChild(g.table);q=document.createElement("div");q.style.boxSizing="border-box";q.style.paddingRight="160px";q.style.whiteSpace="nowrap";q.style.marginTop="6px";q.style.width="100%";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");w.style.boxSizing="border-box";w.style.marginLeft="2px";w.style.width="100%";q.appendChild(w);h.appendChild(q);b.appendChild(h);
+"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){n[c]=null;g.table.deleteRow(b+(null!=p?1:0));break}null!=n[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;n[a]=g.addTextarea(l[m]+":",c,2);n[a].style.width="100%";0<c.indexOf("\n")&&n[a].setAttribute("rows","2");u(n[a],b)},r=[],v=f.getModel().getParent(c)==
+f.getModel().getRoot(),q=0;q<k.length;q++)!v&&"label"==k[q].nodeName||"placeholders"==k[q].nodeName||r.push({name:k[q].nodeName,value:k[q].nodeValue});r.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=p&&(k=document.createElement("div"),k.style.width="100%",k.style.fontSize="11px",k.style.textAlign="center",mxUtils.write(k,p),g.addField(mxResources.get("id")+":",k));for(q=0;q<r.length;q++)h(m,r[q].name,r[q].value),m++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;";
+h.appendChild(g.table);r=document.createElement("div");r.style.boxSizing="border-box";r.style.paddingRight="160px";r.style.whiteSpace="nowrap";r.style.marginTop="6px";r.style.width="100%";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");w.style.boxSizing="border-box";w.style.marginLeft="2px";w.style.width="100%";r.appendChild(w);h.appendChild(r);b.appendChild(h);
var t=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!=a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=n[b])n[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),n.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";n.push(c);u(c,a);c.focus()}t.setAttribute("disabled","disabled");w.value=""}catch(C){mxUtils.alert(C)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=
-function(){0<n.length?n[0].focus():w.focus()};t.setAttribute("title",mxResources.get("addProperty"));t.setAttribute("disabled","disabled");t.style.textOverflow="ellipsis";t.style.position="absolute";t.style.overflow="hidden";t.style.width="144px";t.style.right="0px";t.className="geBtn";q.appendChild(t);h=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";q=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);
-e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==n[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],n[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(A){mxUtils.alert(A)}});q.className="geBtn gePrimaryBtn";mxEvent.addListener(w,"keyup",d);mxEvent.addListener(w,"change",d);k=document.createElement("div");k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(c)||
-a.editor.graph.getModel().isEdge(c)){v=document.createElement("span");v.style.marginRight="10px";r=document.createElement("input");r.setAttribute("type","checkbox");r.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(r.setAttribute("checked","checked"),r.defaultChecked=!0);mxEvent.addListener(r,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});v.appendChild(r);mxUtils.write(v,mxResources.get("placeholders"));if(null!=
-EditDataDialog.placeholderHelpLink){r=document.createElement("a");r.setAttribute("href",EditDataDialog.placeholderHelpLink);r.setAttribute("title",mxResources.get("help"));r.setAttribute("target","_blank");r.style.marginLeft="8px";r.style.cursor="help";var x=document.createElement("img");mxUtils.setOpacity(x,50);x.style.height="16px";x.style.width="16px";x.setAttribute("border","0");x.setAttribute("valign","middle");x.style.marginTop=mxClient.IS_IE11?"0px":"-4px";x.setAttribute("src",Editor.helpImage);
-r.appendChild(x);v.appendChild(r)}k.appendChild(v)}a.editor.cancelFirst?(k.appendChild(h),k.appendChild(q)):(k.appendChild(q),k.appendChild(h));b.appendChild(k);this.container=b};EditDataDialog.getDisplayIdForCell=function(a,c){var d=null;null!=a.editor.graph.getModel().getParent(c)&&(d=c.getId());return d};EditDataDialog.placeholderHelpLink=null;
+function(){0<n.length?n[0].focus():w.focus()};t.setAttribute("title",mxResources.get("addProperty"));t.setAttribute("disabled","disabled");t.style.textOverflow="ellipsis";t.style.position="absolute";t.style.overflow="hidden";t.style.width="144px";t.style.right="0px";t.className="geBtn";r.appendChild(t);h=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";r=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);
+e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==n[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],n[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(A){mxUtils.alert(A)}});r.className="geBtn gePrimaryBtn";mxEvent.addListener(w,"keyup",d);mxEvent.addListener(w,"change",d);k=document.createElement("div");k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(c)||
+a.editor.graph.getModel().isEdge(c)){v=document.createElement("span");v.style.marginRight="10px";q=document.createElement("input");q.setAttribute("type","checkbox");q.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(q.setAttribute("checked","checked"),q.defaultChecked=!0);mxEvent.addListener(q,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});v.appendChild(q);mxUtils.write(v,mxResources.get("placeholders"));if(null!=
+EditDataDialog.placeholderHelpLink){q=document.createElement("a");q.setAttribute("href",EditDataDialog.placeholderHelpLink);q.setAttribute("title",mxResources.get("help"));q.setAttribute("target","_blank");q.style.marginLeft="8px";q.style.cursor="help";var y=document.createElement("img");mxUtils.setOpacity(y,50);y.style.height="16px";y.style.width="16px";y.setAttribute("border","0");y.setAttribute("valign","middle");y.style.marginTop=mxClient.IS_IE11?"0px":"-4px";y.setAttribute("src",Editor.helpImage);
+q.appendChild(y);v.appendChild(q)}k.appendChild(v)}a.editor.cancelFirst?(k.appendChild(h),k.appendChild(r)):(k.appendChild(r),k.appendChild(h));b.appendChild(k);this.container=b};EditDataDialog.getDisplayIdForCell=function(a,c){var d=null;null!=a.editor.graph.getModel().getParent(c)&&(d=c.getId());return d};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,c,d,b){var f=document.createElement("div");mxUtils.write(f,mxResources.get("editLink")+":");var e=document.createElement("div");e.className="geTitle";e.style.backgroundColor="transparent";e.style.borderColor="transparent";e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.cursor="default";mxClient.IS_VML||(e.style.paddingRight="20px");var h=document.createElement("input");h.setAttribute("value",c);h.setAttribute("placeholder","http://www.example.com/");h.setAttribute("type",
"text");h.style.marginTop="6px";h.style.width="400px";h.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";h.style.backgroundRepeat="no-repeat";h.style.backgroundPosition="100% 50%";h.style.paddingRight="14px";c=document.createElement("div");c.setAttribute("title",mxResources.get("reset"));c.style.position="relative";c.style.left="-16px";c.style.width="12px";c.style.height="14px";c.style.cursor="pointer";c.style.display=mxClient.IS_VML?"inline":"inline-block";c.style.top=(mxClient.IS_VML?
0:3)+"px";c.style.background="url("+IMAGE_PATH+"/transparent.gif)";mxEvent.addListener(c,"click",function(){h.value="";h.focus()});e.appendChild(h);e.appendChild(c);f.appendChild(e);this.init=function(){h.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?h.select():document.execCommand("selectAll",!1,null)};e=document.createElement("div");e.style.marginTop="18px";e.style.textAlign="right";mxEvent.addListener(h,"keypress",function(c){13==c.keyCode&&(a.hideDialog(),
@@ -3618,24 +3620,24 @@ n.apply(this,arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.
function(){e();l.update(!0)});if(l.outline.dialect==mxConstants.DIALECT_SVG){var m=a.actions.get("zoomIn"),p=a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==l.outline.view.canvas.ownerSVGElement){c=!0;break}d=d.parentNode}c&&(b?m.funct():p.funct())})}},LayersWindow=function(a,c,d,b,f){function e(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),mxResources.get("rename"),
mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function h(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;f.style.borderWidth="0px 0px 1px 0px";f.style.borderColor=
"#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var k=document.createElement("div");k.style.display="inline-block";k.style.width="100%";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxEvent.addListener(f,"dragover",function(b){b.dataTransfer.dropEffect="move";p=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(f,"dragstart",function(a){m=f;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(f,"dragend",
-function(a){null!=m&&null!=p&&g.addCell(c,g.model.root,p);p=m=null;a.stopPropagation();a.preventDefault()});var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","top");l.setAttribute("border","0");l.style.padding="4px";l.setAttribute("title",mxResources.get("lockUnlock"));var r=g.getCurrentCellStyle(c);"1"==mxUtils.getValue(r,"locked","0")?l.setAttribute("src",Dialog.prototype.lockedImage):l.setAttribute("src",Dialog.prototype.unlockedImage);g.isEnabled()&&
-(l.style.cursor="pointer");mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){var b=null;g.getModel().beginUpdate();try{b="1"==mxUtils.getValue(r,"locked","0")?null:"1",g.setCellStyles("locked",b,[c])}finally{g.getModel().endUpdate()}"1"==b&&g.removeSelectionCells(g.getModel().getDescendants(c));mxEvent.consume(a)}});k.appendChild(l);l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("title",mxResources.get("hideIt",[c.value||mxResources.get("background")]));
+function(a){null!=m&&null!=p&&g.addCell(c,g.model.root,p);p=m=null;a.stopPropagation();a.preventDefault()});var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","top");l.setAttribute("border","0");l.style.padding="4px";l.setAttribute("title",mxResources.get("lockUnlock"));var q=g.getCurrentCellStyle(c);"1"==mxUtils.getValue(q,"locked","0")?l.setAttribute("src",Dialog.prototype.lockedImage):l.setAttribute("src",Dialog.prototype.unlockedImage);g.isEnabled()&&
+(l.style.cursor="pointer");mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){var b=null;g.getModel().beginUpdate();try{b="1"==mxUtils.getValue(q,"locked","0")?null:"1",g.setCellStyles("locked",b,[c])}finally{g.getModel().endUpdate()}"1"==b&&g.removeSelectionCells(g.getModel().getDescendants(c));mxEvent.consume(a)}});k.appendChild(l);l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("title",mxResources.get("hideIt",[c.value||mxResources.get("background")]));
l.style.marginLeft="4px";l.style.marginRight="6px";l.style.marginTop="4px";k.appendChild(l);g.model.isVisible(c)&&(l.setAttribute("checked","checked"),l.defaultChecked=!0);mxEvent.addListener(l,"click",function(a){g.model.setVisible(c,!g.model.isVisible(c));mxEvent.consume(a)});mxUtils.write(k,b);f.appendChild(k);if(g.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_VML||mxClient.IS_IE&&10>document.documentMode)b=document.createElement("div"),b.style.display="block",b.style.textAlign=
"right",b.style.whiteSpace="nowrap",b.style.position="absolute",b.style.right="6px",b.style.top="6px",0<a&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toBack")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="&#9660;",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a-1);mxEvent.consume(b)})),0<=a&&
a<u-1&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toFront")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="&#9650;",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a+1);mxEvent.consume(b)})),f.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(f.setAttribute("draggable",
-"true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",q=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});n.appendChild(f)}u=g.model.getChildCount(g.model.root);n.innerHTML="";for(var b=u-
-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(q)||mxResources.get("background");r.setAttribute("title",mxResources.get("removeIt",[c]));x.setAttribute("title",mxResources.get("duplicateIt",[c]));t.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")}var g=a.editor.graph,k=document.createElement("div");k.style.userSelect=
+"true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",r=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});n.appendChild(f)}u=g.model.getChildCount(g.model.root);n.innerHTML="";for(var b=u-
+1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(r)||mxResources.get("background");q.setAttribute("title",mxResources.get("removeIt",[c]));y.setAttribute("title",mxResources.get("duplicateIt",[c]));t.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")}var g=a.editor.graph,k=document.createElement("div");k.style.userSelect=
"none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",n=document.createElement("div");n.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;n.style.position="absolute";n.style.overflow="auto";n.style.left="0px";n.style.right="0px";n.style.top="0px";n.style.bottom=parseInt(l)+7+"px";
-k.appendChild(n);var m=null,p=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";p=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,v=document.createElement("div");v.className="geToolbarContainer";v.style.position="absolute";v.style.bottom="0px";v.style.left="0px";v.style.right="0px";v.style.height=l;v.style.overflow="hidden";v.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":
-"1px";v.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;v.style.borderWidth="1px 0px 0px 0px";v.style.borderColor="#c3c3c3";v.style.borderStyle="solid";v.style.display="block";v.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(v.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var r=l.cloneNode();r.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';mxEvent.addListener(r,
-"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(r.className="geButton mxDisabled");v.appendChild(r);var w=l.cloneNode();w.setAttribute("title",
+k.appendChild(n);var m=null,p=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";p=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,r=null,v=document.createElement("div");v.className="geToolbarContainer";v.style.position="absolute";v.style.bottom="0px";v.style.left="0px";v.style.right="0px";v.style.height=l;v.style.overflow="hidden";v.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":
+"1px";v.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;v.style.borderWidth="1px 0px 0px 0px";v.style.borderColor="#c3c3c3";v.style.borderStyle="solid";v.style.display="block";v.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(v.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var q=l.cloneNode();q.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';mxEvent.addListener(q,
+"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(r);g.removeCells([r],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(q.className="geButton mxDisabled");v.appendChild(q);var w=l.cloneNode();w.setAttribute("title",
mxUtils.trim(mxResources.get("moveSelectionTo",[""])));w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(b){if(g.isEnabled()&&!g.isSelectionEmpty()){a.editor.graph.popupMenuHandler.hideMenu();var c=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var c=u-1;0<=c;c--)mxUtils.bind(this,function(c){var d=a.addItem(g.convertValueToString(c)||mxResources.get("background"),null,mxUtils.bind(this,function(){g.moveCells(g.getSelectionCells(),
0,0,!1,c)}),b);1==g.getSelectionCount()&&g.model.isAncestor(c,g.getSelectionCell())&&a.addCheckmark(d,Editor.checkmarkImage)})(g.model.getChildAt(g.model.root,c))}));c.div.className+=" geMenubarMenu";c.smartSeparators=!0;c.showDisabled=!0;c.autoExpand=!0;c.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(c,arguments);c.destroy()});var d=mxUtils.getOffset(w);c.popup(d.x,d.y+w.offsetHeight,null,b);a.setCurrentMenu(c)}});v.appendChild(w);var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';
-t.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(t,"click",function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()||(t.className="geButton mxDisabled");v.appendChild(t);var x=l.cloneNode();x.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(x,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),
-a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(x.className="geButton mxDisabled");v.appendChild(x);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);
+t.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(t,"click",function(b){g.isEnabled()&&a.showDataDialog(r);mxEvent.consume(b)});g.isEnabled()||(t.className="geButton mxDisabled");v.appendChild(t);var y=l.cloneNode();y.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(y,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(r),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),
+a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(y.className="geButton mxDisabled");v.appendChild(y);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);
g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");v.appendChild(l);k.appendChild(v);h();g.model.addListener(mxEvent.CHANGE,function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){n.scrollTop=n.scrollHeight-n.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));
-b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var y=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",y);this.destroy=function(){mxEvent.removeListener(window,"resize",y);this.window.destroy()}};
+b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy=function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}};
(function(){Sidebar.prototype.tagIndex="5V1dV+M6sv01rDvngax0oLvveYQEaGaAziE0PW8sxVYSDbblI9uk6V9/VVWS7ST+kB0zL3etbmIn3ltlfZRKUqkU/rpRLN6MmFJym5yM/8QL/Xnw7yLceXQ03fA3JaOTyfjCQCKZehvu66tErCMW6J9E1M4jlJcFTJWIPP1VIKK1ixj/zML4VBRiTMaf9HOKx8G7/lwy71V/ZJEv8Vv8cKea9KW646tU41nk678/4tK7SZVu5FpC9oz/TDPVnkEPJlsn4wVma1lEnVemGByy6q+M+SXkSmaQ6Vv27gJeBDzyOQDMu1ma5FVEEVBEtuokgQhdyZ62Uv/9qWWoYPRltgx4A3U970/hc6BnIuD+kdI+KbGTcelGce6ec4evOBl/k0r8llGKtWBTvulF98xVKjzEvxWXDVS/M8VHF57Hk0TDpzpxJQGScC9TIoX3euXvVV/UcWWpDFkqsCYyfaM/1ly36vGfgVhv0oiasyfh7ypgyaaBaKHl5/nThqb5VeAvZEigXx8k0AolJJUkVjo7jGBOHFOm29Se3FZin6VsyRL42V+2U90z9crTOGAeIEK8Q1UCnMlGxk4CLWb/gsflKt0y/MLnbzyQccgjaIivAjgTT/Gtr4Quf9cXXWRLjRKxyRwvkBko75hHnjisPzUkP/kyESnHtwoAtQ7kkrehL7UyzUAtLrh6E5g7Nnn9iYo2SWW8ZVr1QYsTIW8gE+ll5kHWQlXGdr/Qug1Zl/RDe2O4FL+fWPBaiJSUZGoDT6HRYT3DN9Gdgy4agY3Q59gj+iIOdAOB/MmYYlHKqYp5PMLaFHMVirSSG2XYySnnZrGHNW19JdaZoiYxGV8LbGq+9DKsT0APT3Sk1ldzXaZszQvOpfzlkndUYodytAPDOEuxuocyEqlUmM+Jbm6HevkAq0sAW8+MB9BmQJs+8HQr1Wup3G2zL6uCetJZjXKofV7J+FLnUUWtxZyLTYa20FzpV1GxEgnVdxH4JOgyS0QECr4F3z3nEUHWUQfUjUi/ZUv7tjqTGaCkl0q6Wou0Ef9tdhslUBAn9Xq4GshZkG6gTmx0m8EqvuGoYzb4iwMYdDnVMcpbS2QM3TYB3mM0Sp71/0fuSVPf7lmki1d10DN3LE6x0/CKut+GuddVgGpRyFCtc/sZYS/Cm9FySdUj3sgIPlOZeZvWNAm1o0uTXH81UO3zZEEqQDkwD5q37t+zdAOqNe/RS/aJ6Tdi5purBt73xV930PiLapT8HTTXqz2Kh7JloQ26bIlVOtAl6dIY9uBPMhbeCdgtu/ZLJeEe1XdduTSPrpc6v9+TlIf64jakMpeQ9RumQFVr3YiV3vcb+eZyy9Viw4Ogl1p+nM2xmofSyNSdYgHjnSzA6m26fu+wTKtwYM30S1LXTkxPsYp0qp+nbu8yg271r4xnWM3/hoseBI+8qttygmLlSfLhZtmsS7CZUd1Kds295iT2m4dTh7aH0qLgF2QqGo5qVVdLtHiPvIp2mdDXinvvXtBgGhLRI4/1sJs09z5TqY6sRCNVqlU+2qxPDNuRuxm20MqLmqNOO3CqHRqxEGEclC3jNtATkMOLhFZpOynrH5FAc3UlcKRsbJHvy/9wD8iylUSFJHhrrfmRYBPaZCGDZ2Mu6QXolr3prFf16OdvsxOjqyqUVPXzVEngw+g2Qrur8WehCxWnqu71sE9gv/QWnrSalK00WglxllLFX+VXVaxv1TMae7yFcRrlV2059PNiNr2+wdxh60gmKamJ7trRDvIm4xsecYXqxI7z6sQ5pICWKDHp6jFiEyjpgtLioL1lU6MmSu3VHZm0QtcI1RVNeCPPjIeKHnuZLamxJzHnNIzdyIzsV2+DJm+Y22ZVlPINS35AxuFl1Bo4nQ5IJ7PIfxyW8xzGplLgaG9BGginPqsrUhn55RCZiLoxbRn4v4dAbkYubdBLFkWoRfXYs24CvPz8lGzpNZchT1XDzN8OSEkcF8ZBhnP+1cq2jJgddJORxMmOmMX7w5A96HXzILoS882Mr/IBWqAHTcjxejheKQPvJRo3kWNuP0g0msMlzn6upFoK36/o6A6R34t5fG0RKMGiNdXSwyFVJX4R6mwE9Y+GsodSb1gcv7cCTRUWmCEx1rI2SAbsPvY2+m9QmTl7mCeBdrAdKeMnTGC24X4ylMvU3qWtzY2Yf5/QdB+kwyKPB1i9agqkwEqZJqm+HLULWY27rx0Q72mUWoass8VjGOIQHihN0cRKenQVagMsqEtZ40YXPq4geB2yGWCXNjHdvWUBLwzZJqO0hL+TVEJ2va5urbACZWbCVYXEuLKywZep5bhnERlBRuANDHRa5c1HgwZlFJY2kWnipFFzIUE+znKy+EtINIQLcbvWDo8tdUmlOANNl1A7/85EXGmvHeBG00tYB81LS0AuLBVnVATUY8Ryv9DreSbjX5/Gw7BN6qTSVmRHniapOrKd1UqFa33dmLRcn4eiO68TzJgwXYga5OrAdj+l/P+s/3w5u4BXnkOdFpGwo5wOb+7Cf+7CX/0GtfRfzjCN8YfJX05g2BeQMAv9mxwCtgIWyOwr5L/o7pR+6SJ3Fe/5QLwwr4C6BIv1fKyzpToXHJTbLiG8/GQotrMJyTgA31zp7sYz07uavDfhI0+ET93fNFPKrlqZnmkCBaS85u7Qkeu8E9ciU7jYt/Oin4Cirkdwp8G3qlPh7jTYKupVrjsR5kytjqzkeYIFXRodnI/DcJL3VsvKmexWjgEoQCsdT/N5gLf5grrxeJ6vHTm4gO6UlxdM9fCJr5VdTooZGIdRDXwVSKniAK23gL3Xr/TsPT66RK06s+5MS1xeX2UqEqZDcGRYCDPKrMfWwKV89WhCtCt0umFC9cHJWKCO87lZ93ND0Yx1Ilesax5NH5/A6H4+Kc+ulmZcK+SoYJnx5BWnwRUNUOzoqJMouyS0VN6PSOkRm10jTnAgsGXKVzQTWkNVwXMVcD3cwHzgiccCc+0iwrV+eIB8vYYrzXPHQmiE1ZMQ1dCqZe8YRowhM391K5bkoGWFgTnpJC0cvypov69W1PHZKu61VvUKlrlgOFehv8dRqYiSVFVPrFeh9R+a6FKwUKF/2DYN5EtABZqrc/t6ZBF2b+Aky+I4EDDf0hE76YPlKyXWsFCNdaYrfEHqwDPaoVMBPZl25/OkuXfYh1AuGViPJI2HzBH4syPx50fiP/fFS0ErkVp1KFpUCxjqH1AdWqWlSspDr9t9mp8sRe05lZKcAbbwhWfvXCT5uaMGgh6KpJLW1xfoBw3LaFijA7pLbA/dLBaAHq0vExEoc+vIsCVvS8dsgKfzHs2zF5UcNegfdc9XQw7LtzEBEfnVuw5qsk9o/ZpU+TG0Qy5lmqJsZZKl/bKVR1cmoRI9kMKywhvIGYGrFIq+bi/73BQ0hZ97urenL6JXo5mqakobbtIVV66p/w8gNxay1cYALkHB9QnaBuTxx//OCudewXQalev3OcXoIopkah29PmH7C415oHVru0dODdPkGKapDAJyVt7oUe06YBVuotXIfZ+gJPdtaYfWuto0odAH8LSEDeELJ+eFgmTOYjMjHzutTu3jF0WpG5cTsOdrF/oO4OA7ZEqfB4GIEzsLWN3o6/CT3nipaAhKotcVWg06C0PjypdFnnW8zKDa16wc7zM8ads4WfHympGqW4QkbMBZ9BJqM5HWi99YkIFBog0Hzio7lkrk6FpEIqHNUzdS+rD2lUqc/dJZEPYVaHSDy8bczBP5mZ0nMo6LJDO2Kt7crnZYv2dpIkqO4Lj+UwiaZGA0N9XXHbZnPaKg7UVm+cmsVbpgLwQqTBDlK2QRjYqU9WGg36q1rR4EKSmgVoQS93g0qWbzMLnj/zKeThc2Ny9xdcxvW89tJ4FBZ+TrYS822IEJJ+OfG7MBproKdaU+lm6ha0k6VD5Wkg2Rn63EH5QRvWjn4LGOw95S7TY+lo3TH5bgr0x4r7qHlmhA5xdL8inC2+X+qnIjibHk+hEt7HPJHmiPr5FDKwqa25qJBIaLoGOvda+c0H4n10rRyKPrgymjDoVVMM5x8qynOBbcSwY9gDZTfidm4q9hNigH6Zq7EjwAgaEWn4CdRLdtSHCS1yLr+oE6voukO1CwEDCn2jNsm2CDCNlvtAe2HK3BYr8H2yZ1uJHuZl7so7STbMGZwqkd6+yc2C8a0q/ngU2T1/pvyFPmk83Tn/jK+AeZjy7QxdUCkrSe3NbTqNgL40jzsEOzt6u1D9tkTG81GT/skQ2ayLenp/lHp2H3zgzG+tdOZtsNHX1oJuNi99VAhH9Z9NF0P6/LNDBfboa6fZhgGdkTPhmqg3Eaf+zelGaa70Uruxfjpw7m7dWUBlIMPOJLqqEnlbYw7m/rCMN8W4EIq3yU28lRr/00O6EP07B7pPtJPgO3BzSObqMkNTPyh4nQVpli6C+Kh7umeGXIdYrzyrTE4a54V+7GdziaNakWdy8rutDfP+5Q6uGXHqZnFasiznRQXfSQERvNwMTfZtcLB/4N88lR1Bd6tC6Wmg+3UpO1nNAGReekn+dT/fCb2QYDbrLizeyyPyxWZ8bSBMBkfKP5KJTH8MncwhpdhJEJPjKZR2kWM4anfp4/4AqMtort1M9HJXJkDjXvCa99fDR7j1goZ+Ci5eNlH6zuA1JT24fiScpErMTelfGWWtwxQgHFjjzCtuJuPPlabFdZTK9hY7OU1LD5pjsLmKV+V7LRWsksxq1hcNHhDR5nYFYqnRg0I1Y7DGhmMD12qaM7njEng52y6I//yONAG9BDsy/0hb98H4T2Hv7Q9t5BMyMPDTB4Nn9XzMNV9SGpaZMwKq/cRu6MBdc0PRqMupDoGiLfYQUGNXqIoSzglobh11Ll0aDyYCql7wahxgrlvX5sEk9cZ8huDzRQKtakbzDk+1FCGCwTPmIQ6tuLe/08bRLHSBvMs1uV8of6M2tpff8UM/Pjklg8LY7ij2R0alrmSxLrke4KNjZKlWGvuIKL9jaT+K844epjeCsbzgtnkPNwXuM/X3fC4BwyjB44eY2kUW1gqzKElvowWzyKevTim5hHprYrSXGfbPU290OwgmbZRoHEXmVmBwR7emHQ9K589FG7k96B/hk0nQWuRNKy6Ee92NUl1NrCPFkWodFqXT7dWLX8EYuTjUw/LIFnGWQh/wD6BXjF5f1UsZTtMB/UxgsRVUy8uA9OYDJGlyEbZyNpS1HacBx90z06HU8knhzZ+GJAVIo1Vl/L92CjS6WtHnxx8r5FZ4xmPbZPYWNQQGbmEnRmuZ+BSxs5k2zBqQJpskiklWy1PIuQ4XrcZbGXdyOzpNmGIhLrhZhgucX6peINVyxIRreX0Gvda5tspRgFQCo8FlPjIwyemeTOGHtHJCIiCLF1sTgfj3fTib1jX+DJSDoQaa0feE+++5K/Z4mSnEGL3N11JS8SdE9HeEraqGfFD0fVEJwXKwldJ25PbrDKdG6T+y0F1RlOcDth5Q1LnHvED0S48Kx/2FCEsd33NxRhFplVkqLAB2obiywGV+ucayDaPEbVTg7QOnlfSrsfbDAhf+w3rmPInvWoA13OtB5XbLiyp9hIlxATesgqVVuZanqbKm6MJh1Y9lBCLL9k9Gl8cwW+HVN5dYJRLrKWiYZmurNPX2FH4z9mJNcfpaWJPKJ1YKpu6aZ3cv+m5HAb00cnVoSnzXdi39v8OjrjroXiW7JZiggXhh5ecLu4/2OIdA7Ih+C08S2Hz/Mi1Fqe56VEdMY8L6Zn4/H4j64J+gKCZEl0trLXXWAjGMsGJWQg26I8EcMmW9IrrmlhBZrg+JIlHLZJUsDSTda8UlJHNIXvj2Y5Dm0N7+NY9pee1o2LUIfB7vYSCPXf0b/4OxT2bsD8RsTjfKH/6Z9VXOcwfICpjK3rhMzX9DytZOyWPLfXrWCUPg9NPwImrq4cFDp2bgze3FOyVbYDpm9SprndbD67s+TRiPMDD27nJfk83rKrqZ7X5xQq0q9YDHNhWMhV5/fLowhZv+42gEJbG6qJssvEbZBSVOXSZTsKYuja+uiYEEIglnuoh940Z5eYnsnancUvHRghyGUuRsN2kzpsWYZVmcuVBAd9W77MgSF8cWI9JZs5sAeipm0DrrRhtrqDCGj+YStWogZxgwj9oEfBAkdsCZHMvHQ0uwCj1xdrQQeRMG1SSzqzI4JDRSpiZTWQ8TCDQIm6wsMEi66wv1qClVex6HKgZJe6zcRte5SqGO6zX6dWll1JmiVrIz2g68ZgQnab6IEXIcRmwh3ZYRxAHN5hGCfHMT5dGKlkiVuP1WAvj64TsOvFLGDWJOJAP/lY+rOPooctUXaFcG5CMCa1a0AHPB6LmSeMTZjfdEePpjmWiipzbiI1JJMhSCDb6SkZvNPUfwVnB0LYx541RzxuJ/k8hFT3ptWjI2OJC8b3RVLQnYF/CSf9GYYUlJRr45LCdn5cmnOM+J+nGctEOKfpC22h0DCFPGOcUCZPT0PubViEX01O6XyqRR4tbFvn7ONCdyczP8nnzoqrvnzzLNmUx3kP0PNFsKof4FFvGGqlYWNjR/bvu+xaITXs0W3mplMCaGSq9dDgslfw95VecO/809fRxfT0YkqMuRWRmxYdiWa1RIXZ4s43G5IMY9p07mxL6Mn4UtAY33ZVfdkuC2NpZQ2orngTjbcXfnaxl7EVNqU7WUX1OZLvoBYVfDWmbgulWK24yneHH1cVriJPvce4Kh95HZSwgX8Tx5T8neyLftHFIDycVUHfSFbhqFqHRluMTCF73Rk7urVIY0gLE+jEreOr5DkbiOfzMTy0c16rX25fTSgzM38k16QXl41tRaVVG+mqHQ9Kj2tRjO4N49KlY/vbrXN4V1f3WuAjOGZmozND0lk84L9yZ3zmzFEzTpQwu8YD2B2viUbXWWKDSOkmchQHFhbnzo2qkgRHQ8tEBty9dVYSnR8lzW0QZLBgZ46HuswCmA8R9ltgtcHh8HNJD3RKA4PMUdZbLlFOtrvUhnEyICPSHGYAsR3mR598eOA4RDUx91qTOIbeVNIBkpDJiqcJlB1dnsAJOg2hOSqwoxkt5cC8PixAfV9cX8Gqx8PJzjAM7N5oP9h+T2rYzFYabfWizslupwMJu8s4qIywhoDnZ+gK/DqkqPM94mMlfji1sFJxfTppGJD3YpwMzng2OOP54IyfB2f8cgzjvK6saydCejFOBmc8G5zxfHDGz4MzfunPCEXQt3+YDK4TahiP0Ak1jEfohBrGI3RCDeMROqGG8QidMBlcJ9QwHqETahiP0Ak1jEfohBrGI3RCDWMfnSDjVL6Y+cxIeMnoK67frkNzxEEetjrhb7XHe/VlzX35Z/NSCj73REj+FIdndDml9mfNO0Si1lGgL+nuK5gEjn+Du6vZ3iiMhyK1J7EeLjJ0IJ0MTApUp8xL0fUFY+1PIThD4lH4kcAc0ZZ7fsEUO87W7k3yOaX2XX9x6sksJg8y+L2461euSImrmyKhGTR4ZOeLfsTzjUylzdYYbqqzuZbvRY8OMSAUjkF3l2M7rL3GgfcSMN/nCg7P1gX0PUvjzEbVbDt124lo0ptoAFl6SwF7LF4S3QbMsrY0LjilL47hGt08fS+aQ3tDMPNvaYbHaMjVCm4278rUQudkb2+mtp+2Z3RgWoYf/YJS812Jv/v7mYQmH57QA7rd3d5cFu+VZMFuaksRSzpcr7Lp9ktr8l9M6+y/mNb5x6Y1f5j/18prJ60PLq+dtD64vHbS+uDyAhVlI6M799fdE5h8YAK31gsPt6BVaZt6RsUp69DTk3fr9ROx1h3yS5LHHaarfvARrtguLAODtUQzBeyZU8d6kM5KpOZkDlwuH5J18iGsZwOxPmOw7TcZpG2xuxs4cH33aI5Jd5J0A/u0wKZ8oZC56GjUdHaNAwVZp8aD2xqnlQ7dlXy5uknqlI8rfmfa4p+V00n/cZ2kaqGdDEA7r5a267C7hbLPjMiWvXFYo0Y/ZnPdiBUy+ToCJYpL0l6tk/j+06MLbE6e4m3OCmUMBlbBmIwYySAVIUXwCUXkNy1blzguKWaN4jE6VDljtma3rNJVX2ak5eHgFEcCGB0nG3TrWcrDQ+wrQdSQmIkm0+0tpXzFpGTTidwVMBCtiEwAsXob3RfLWCX4ypxyl0oZVL1mDXTKAh75Jk66e3WYbjBMgC8SL0vqzqOpBO7WH5vDDkAZ6haFYTV80TxG3EGhkULjQpwqMUeO68F4KirOKKgkwXBn/2FvzDVZc9pEc2C+SiA3Pgq6yskW3VGGFYeCeDJ2blwWhh1SQRGzpMmTZIdgizN+NtQNGoLctdpe2WPnJ+N/XIVx+o67L/O4wYoztyZe5jFhh4EpiyoZ6kje0SLH+OEmmkWxpN90tkyJ4zpgyWbHhcM19WsZkH6Ras0i8du55AloXNdaztzYgSmjVSMTb53tH+BUg7xhGZYONOBme6EMCujYxrX+rN3BeYD6xunkoQ3XlnTdTqBDlETN0hSK5ABzV3IzOXRyoYOyyjWjlS7C4Gzl2KFuctjgTfkpR62bf3bRrzgai5lv1GzlwbDVWPlKbkk35kykmnDxNfh7Eyk+b73cNsoi+HsbRY71qHcpDnlyBic7MhgeB3Q5TsmbJMsckqeTLbVSk+tI5EHclWjjK84IzRcv3ASRtGEiPyEv+h/61AUTSdPlpplatvIkMKP6LPiW06Ed6OhY1wfKmLYftpG+gY7Fc4RyhcXwxBznF3yQ2LXoERXmbJgl6LsIFIGoOEPugOC7tnWi/CywOxNXSxuzuPakZB7BoTLnqxhxGxNtsOAVRmUdSnF0fvb2MtDBzKimE2/MA2mNB7qTEI8873ZXiid0El/MsdYrniqHt38sni8oclZHCnqsvxCLcqZV5+t+fnro/r7m5ryWStYNhRnMYvM+Tnm60EOFmFThlPqfZeZcvRe6EzZntaWkS0wsOJ8spTa4HjHk+6Ibt48fQlPMCVXtlFkLkvG2iMbZYpnXMBwMWHzFas7yPYRn2FSxmTraXlU05nQ71NwNh5Uc4uTB2MANp7Sh5+EmdN03vFN026Vw7ud/xJ2r5Q8KdgOHyTIb+oN5bt1bHpGwXf/vNj8HUrMgLTPqDioiQ1eBf7KAoiFR2zLDcwecuIa+t7TluwWGYR+m9rzA4ghBJ5iZsdwJqknTOi4mHXJ0HtARirSFPaHPBXL1KyZjxYJaSwJh5izfLind6Vpr9KPN18QcHuVG8GizwuetHvkllLGJuoi6sGeG/eObVOI3NJkAhoY154U58DxDm/F6suBsH7TdDa8wy2tA3fQ6YlC9NOXTGgF0TuGI+bD1SyTEX3M0aAXOM1NHtJU7n0ZywCkYmwWjBz30PNV21NvJzuSeO0EfLBzLSaFI8HQybXkJbo+4tZ/tLMW0krl0QcGMLniY2CkXc+kC1c9lJPUyS1OcetH6+4SiDIMPmf4dGpT+0lgaIX3TQmvUXIL7tS5MjYlzg7gjwTfSQF3xN9z0aDhTy1PUXKarOmnpnCoJzWDUmgLFgLBZGF0hcDmELWGhtiVWVYyHIcbCnNNabPDKOwolTaRtHq1FxLnabcBlpslwVCMGezrNyo69hvxMhe7NKq2yCuzowiK1zpsqmSSnl5yFGAIM7kBRVJ1H68B2DYvgp5cBwwNf58z3A5yua4hje1NQxjHTqlC3Bed2VIAx6JNYZTRNUNy1A2UYw6GIJmxFftcFSGvDF8JELCgYOq0S75NO7UvgzpwS72R8qv8/ZWop8DTbmR5fknemaluT2kvj5fRFJLLje6ss2UCcubWuqSZOMX53Uj4XDH+0nxTziHBunKMpfIOWCGTtjU0KwgfbJPYIawXWuUKzqHiBn+9NQxjAUFssWiW8m2z0WSihRldm5Q/ElaZpXEz/6FMhmihnSOm+CF/mw3DTbBjZdrj6CLXi3E5041VrkdJWbsdN3SXA6E78nQk8jJVwWuBLIXHTLNl9S9Ec04PI8pHWKvfRbYEEcvuS8CixfoyRS1PbcJa+8F+wBL2m181vTnDqPM0v3FlG1+IX+QKnipndmk/ZksMe4W/ANBlflVJJs2W7StlP4oAHehqJJ3NiUn8MSXwN4xO/eAtQGNcsGjSN/bzqTf4DMn7D4rLAvbO91851AIa6CmB9wgvHx0e30ekd9TiPUo9cwMH+3uBFFLT571cSLcAO8roTkUFVIjoWj5N7XieKjDzA4dPtYd3b+jiPZCB+xaTSDirhaBFZnWFuWhNLdP3Sb/diemM6EMb2ms3QNzgeGsc+dOUKGM1ktsSZMgjAqTjuIn5idqksZYIGnp6A8MItr205EY/N+dkKcxzX0bLo3kLK9I8hiEr5BNFrh+KEfgwopR5JhgOTPkq5+gBK/QFjy4GFftODSX9ILqqJg5X/TGjj1R8yV3cYSdoPqRDXLMCAGUNSBtJGzhgsO/Y4jyg+xbxXE4/UhoiespQF77gOa0e7eWi0s/FkrD9WNG0CW882fBvwlNxvvFfyzRgorU/HptUVBG6zdODOGk83i2jQkJ/09x4uccbM/F6NH7EINuHhNEZktuOlMlO0SkxXYfnHZpoRBlaYybU5t2wpfL9lQyThV1L6NUm34kZThkF9C91FPjq0dLTEeyeea4Zle02yhLzFiaaEfORJyjLFIrtJa9XA0Uow6UZAnjseLcPmbjwh94VHlsZGJvFhyLlaFp2fuFnzDo/N8PQNxE4Sv5tiJNcw3WJ05d/Mzi2K0n03poX0KACac1zyGqKn2QyqF6wS7MV+zr3Ffc5W5pn9sNl7vLq9ZZrziinM8xgi12CwVt16W+ucAf8z04VDZ2xY+BrLXtdGBSPi9wrCaqp7RnE87+gFdANgfrM75R4c7dvjxeDKy9T7IFTkqpPoAXYQiJZlrB3kA4/TjEKfHyvEPMjQ8/9oogUz+xaPZ4rkdhWwV3hy27QQUIXFY31wI1PasqxWgZv0xJ31xJ13xv3QajQbpCI/82OJnMLpHwJG11x3p1i4shPunlAdMbY+mDQ74SadcT/xlUw/yfthJ12wCVtxPGJgw35XmVR1CLBmupkxBU53VCE5e4Jdu6a1N/jU1l1rz5B4AuZARroHljjTAMIHFadYVUBjqegcRrgofTqgIKykRANWm7VhSMLHsnbdtYLhX+yd4fYTuTUr3ZK8TFkk6wIn7BA84rk3y4CZBY38HByV/9CefZZqa1Lfl8YJ/XyCfkewgYfsgze+EV67KWnwCyZouIcpJvqubXp6Dx4JM7UHUTRkQsZPvlpZHKKVgpsUaIrDDQU11B6PcKoPHFdt7I03bXa7mAqW41X3yDo3lSmmJL/vwBFhASlaZ0jsXfm6MfThLpmtsXarWZdaWwJP3MEp9za1p9FUGY8NLHuHwdEZkWHpAMndYxfT4lC6Wk739fkD6OMCDguCJSBoA4IClZL1lcDRBKiPmgie8rc3xdFw+kwjeHIM+OwY8Pkx4M9dwLDLEephqUG/cXOaBJxi241gdIG+4kXW43VXMcosk0FYzgZhOR+E5fMgLF8GYfnan+USwwljIWfLACtK/kQvqslwVGfDUZ0PQTVlefBuPZhz8PpuYJkMwnI2CMv5kSxwXGOqMvSUXAmcQrK3XWhuFO41mYyfKrRZTYG1ki5oNfaSB2hC6bslXXbkMUtOTIXkCwSfOD/vaNHt0ykmoqEaniUbpOlZskEanyYLB3zLcLiXhOpJgh1RuSzNZBias2Fozoeh+TwMzZdhaL52pzEGUM0iQB1kRM61k/HD1QkeK5NuTjntucUb3rj/tprpZ8605QWTue7CtACZEpkVMuFND5kWP3MmIwfedJDpkq3XNBgIMnvlDFVLdMVZ0HaSDRPKa4knt0sAoRsm4wvsLhYye9Oj0RIfhHRISpdp4+kRO8y0lcR7L3nwnGCMOLdFAsNyFfA3490RiFWHF8OdweQFbLdrOSJxvmjOlJkv6jLjZBjmZqunZ7Og8kSzaixkPM4YUa53yfEfsR6TCvKKsRd7//4P";
Sidebar.prototype.searchFileData="7Z1rU+O4s/A/zVbNeQGVe8LLXLjtEiZ/HGDqeaNSHJHo4Fg+sj3Afvoj+RJiBWbOY3VIO5mtLSCB3fjXklrdrVb3X83hX82L15X3V6P2k8mQC/+v5uivRqN+WlNf1bvMd8Wc+4v07fvpxUlP/6J58Vfz/K9a/6/mMFzSgIXFl+o/DKM3j6X/VfpWc7R6XUgaLE+plOIlPO3rb2QkXtRnDpaReojmqK5+VA8ScZd6N3TGvIkIeZQ+1kxEkVht/EHf4wv9i0gE6t0wkuKZPfJ5tFTvNdbvDIUnZPIgzVryj/pNyvaSPl43Q12mL8+6ycuL0kQ37CnaL1GGkBNlgOWJ7vhieWBI98GhTLoB86NkzpGEDNUw2WIlE+8Aue4DhFC9ZmmoIfU8EUdKmcczj2Fga4Otr5ztPzGdYyCDm4o5GY7Z2DFGrFeea8l+SuFjgDrrFKA65betIZdu7FGJgqo4BTtnpan+jlfBCc+GitRRDdYZFFbjULASK4P6cyQawwTr2IE5SyoDcj5fsDm5YiiVvYX+uBWRu1Rkjnou6q0nJ6oRbJbHO7zdObV982HDgFYcLAsXbHOlYQADW2S4FlcXanE5HvPnTGL1Mm0GLCObvgjySN8OE049BCNTyj0kyw3MJnYiyQMkUGDxKUf9BQ8VFV7VbzFkU8lRbtSd8u5mQXeQKyH5v8KPqHcwQ1bge8geE1ewoLzpf0+mscS4X1sEQDImfbSCEKzTsAXDYodkJADGfgaGJt4NToYkYmA/E0P1IOEp9fmKejqaT6UZtnrinvfRkxSf0Rc+Ky8Bmr1ymR8xuYXZ2wVmAxtmvVYvcpbYBYqcI8YQDmfPWIwlNoYPMNENJ0DoxMAUC/Jd7xY0XGKHrVvDxu4zNsh6rV30ikqcMBYpL3i4JFdUO0byDRuueZ7atqX9h/k+85BjnrVsMcdChAwdpbGHWg/mrVAG+SJEzmm/uTjMdA73D1mvGf6itUXkeCLCt6mcFRWQ9abi+PQZ+8oEmLERnXmHjzll8/kb0aY8NtROcd6WOaFOUZ+EmJ8O8AGCjWUCOKR+mBzDD9QzeQzdltJtgdKKpyeGfXV2SqvahHEkuf/M/QV5pBFKDxR0RA1adI5otwNJe0HDiFyon7BhGlO4V9rfTjHVFzKVCL1Qg7Nd4iRkg/Mfnz/h00ZFl6xup43uWBjRWFI/wqeJmm3ItblBik4LtYtRv3qttJ+9VB5ZtHSpZKd9T32STyP+k5Exm3OX+/gms2ENlva8N7l9NdJLFnKKjtbQwiC0YcjDZIxv1Hfm673WeVM/rbDR96C22g36gaTcxwa6i2EeUjnn6tkX+CKhhr9T2rQo0jKiXPWnJ9KXDN86tj+9/wA5WhL1lOhYi8ObR9csYfUfoIscdqHO3jZIR4w+oeM82wWnXNEIp4IycEufHG/icvWEEb5wjOn/QGw952/YzUYoTPKI8fS4WZy+pQOmG6wXdMW9NzKR1FXPg294oUKom8hchhHpc+yhGRDYS+Yz9SDY1RPIXL5KfiTn89il6TPiZoYYX8UsEQZs6jVDV0GEMVJWdCEbc1hLp7tsooow4BH18I3sTiZxTotubHtQgccN2uvVKvb5v4mKwqeXd+ARXPtPTFkXIg7JiIeMok/7AaIO1BCrj0MHu4Po27X6ID/UsUcdsEFHvJPhTWLqHtqAercOD/0Pn/sMnVu/C9Kb2EeYtWeAQhjNY7paCfU7dIcEu1i0yVpVazZZvIFk6cfiwjay+SACGjn2DZ9JijCDeocjfcdcIef4VvJOkPX9U5J6wdiAwXKJNoHvrrFh7sIXvGWxRBlO38WY3saR5CiDN1DZqhuw330X5cDuQjt9jyMywekQte1LZW3hTpZUrqiLbmjbTfihnSzfwmSznS6Z+gt0zKZJBTG+d2zBFQHOOPMOHHxd44jcUH8R0wU6V9e8EtyDiDY7wuVqTjtM/uQuwvPdHQTqnFguEN6w3LrHBcE6HY2wce7CnpoKhDfWesXxzJevHem9p9RxKGIf37muMX0h9p/HJWOeu6Rckr6r1FPIdQlmdKdFve5XoeM7OtpBauDH6E1s6OZVmtKj7tMo1gk5VOJTYmBOUgb5dxxwhPHIHlTSUYY5poGasjcIkyF7wAM6phKf1QjNyKQb47MYzUJW1pNW4PPyoJXsLQuiGN8xJtg2mmFOvDgS2CA7UFGZDNLR39DNWLN8o+2MdXzx8uQhrFUBPWed2Mdn2oMFxDcg0Rnxu4BEZ65DGwUasnXokNMw9umKo8M0Yt22mPeS+jE6M7bTgl2WDwwjJFTuacCE8rlOB3T2hm8bMczYeq0BgYluI+lCBcIyyuGS+ovkhneE8wwKKpad8wpfPXzsYmQ1Awe2Y3vBVhRfZTKw+jgZ5Rgho3ltJX9tQ4nQdG9C+ScbkOg0bhMqPpJDxqsVukCXWRjHFnLC5kw9Paf4lCxU8CAjdZbiBWPRNTOXwXpxZqDo1qfpkNnafY56cs/Dd4BiZi+Uz+jOQO99HrJXbJhmpMR243yk6rGUfXsnxArfKjXMeYtaKB/holurPahkozWtp0tBYsNsA++mj2KF0fxrgRXyKXCim7UtqOEM6ROL3k4HXCzpv1SiSzCq1wxbt3TlrYx0SGOMjjZYND7HXLJVkrj8yGiAH7e01s1wL6jnpXuM+4wu2glWEGQDVre5d5bMQ5hWAz2VLyRdcHwBlS5U9lCGeUX9ucfII4+WOG+aQ93QzXn5YkkehBfRBcLszhawgirQ4jMnoCIQH9HiOxSGOkjMaP9hLCAjfKliYPmNGectuuQi6K3mVvgn18Ln/ya2BJ1znAdQRund0vGINTU59yN88xd+dImzEhi9c2hz+D3WTYZShCFGZKiklQwZ7WrNj/3t68VlpI7HA3KF0lvvgoVfctZISJZ1Eb4P8JmJXWDDyeBFZyjCrVqXM99lp+rphKSKGt/uA406pgufoasQYPa2Kj+Dc0zuqi3HFQE6DxYstS5HvY1dD2e/bDAPxyBFr5Csx/SR+/OVwsIGatbtLw8aCBmFp/1VsOQRoxgDiGCHGxmqRNldGawTQ4Y5oCGbUXwztw22RDNO7gs39g75CmJOKpSN/0I9fB3ooBIm30EjckNj38V+F7pdOpcnQx3SVYAxOcswGbq2qzTjxG4wtCE4nzjC4xrg3UVzLiTKGiSGsVs+vpKT+gLhiRRYd9MCJrr1aeapt6wXaFJT5IY/oXO9wYoi5aQeX80whnrB4vgZpw5pk6HSRZF8I84z16c12NerRdj3F9Tolq851tbm0pvrYZzShjK2HdwRlxEZcHz3/c3xtAf9iXE4wSKDGaV48ZeKCq9yMobV1pgwgbHrJesFe/7KpMsRtnsBXq8XyrV5EQKd0b91l6j8SWMOGi5RLtWtEqHl0z2KpPjWqHF6XLfVSjnphCMMcgMb/5qVDD1GfYz7a3FkO7ZT+FJ46GrsmYWubG0IzYhwKMEuEq0x/bnwKDZMsMLqGeYVVXro0uNzhENqsHZK947OWZUfg07fgtWhe4fEOJRQTVpySiH1oaL7TKaScnRHi9CRpWuXkcxoOAZU55lGGFGLW4xNFmHGqrYYIYnzwlcrjLzAe83fLNJ+OHZM223mH/pG8Z2MAy/TG/7EyN9KAePLHNxyTG1ZxyIScqZTAdA54cawWh9KvaPi88KLqE3bZTrhrs9dtJdVgU9pMtopRdmzwrT0bY3gAi32mWx9Yn6nfDgm87KECEcXOOXD4MU3vlBVRHNeofwcrIfoYDUKC7C6rBTKwpPgczkpoDXzKMoADPDx45140bYFOkxDH5dujZVjxj7GYLd5J8x66j5gIzTNCNskD4dyjwwwztgG7MJ0qM8jKt/IiKt3Qt2DEWmNY2DTyVEfowzFB85eAsHx9ckFK8G55o1nlCBNdjHG1jZG7DAW0hfklG1bx85h3hO5jJMDnOMIhlfEY7cNDusgOJvpmzYI12oH2Op3njn5O14F2DjPgE/nHI/NMY6nmTdqG1xTnCxIeiUgXaxnwIt1Rb3UVER6XQw8W0t3Aku0E/7Btd5wFOpKzBDW+jNNJutprEjVkhUMoYoyb6VYj2osMeYxmVdYrTGzw2WEYeHintO19tZzUnwBYeOUrnQ5+ndShBMXrsZSSjllvs/x3aUH3lyOwmXT8RVsjGAdQzPGR5whfLAKfjml+pAwuUxz8KhL6rEkNIgRFrh4iS4vFCK1iKDHVYg5uaTRkkmMtFAHjBFzl6d9jDlLUFM3J8Ru752VtvcSwiFdMUnRj2P5q4ublNjHsryXklIyzyOTZfq8qDhbUOZQyilWK4q+JIul6lGQQYwxuAlV7iullAJfWB50HM//m7noTn7N6Ejpk+4UUVs7CKu8mpERu6maXArHWPMK6gpmQjnGHzDo2lk8E90+Ex0iVJPQBFGXhcfetqJd+hQwRXQcdICgrseUeSzQthw+27xV9CItgrEGKTr73Ow5bbcs30HRdQcyCqLnhUbsSVvoSKE6ehmgbWygsHP33hlgA2xBpc8kgA98zgRJAwXYSI2dpWWnbx9pWiBmTF31HZ0924W64BJJ6idR2STZ+LRFHpeMIWwobjpj5VVvEbjP5YyiC0GbpU7PytuBW7iBRzHaS+bl0vL+yyfE6Owms/1Tu3yA4RNkdBbUGViI8xNidJYUnM/6CTE6kwrs7uVnxB10xMVZbeMXfILcxYZsJrO2yh89GcirWayQXXQWF9gFeRPYd5cCY9cHsFPwD3nR7cZgVRc/5sW3FUPldHzMi28jBjuSK/IOuPvmYnSYdrQNZ7wIFRbU1eNPgPFpLLCzgo+Bsaus8g16PgHGp7MMYOg1jM93MFowQVmVgzhEr7DgNLSCxa6sGmDKSsFiV1TN0jf9PoBFp6R6xQiHzUFnkXZ40P1zP4BFt2hNLx9sImta9KsWcmjRrVqw6+YfwN4IF1/1VeP8COp4QRdymbM5ueKL5QtF10kYrJGcgX3BJL62yWYvCSj/QCc1RjJGOKkNjQUVd74Q8tlD2BYRrNGlwXtJEboHYG0JPoBFZ2nsKp9Bw+IzNHZ0Cqph0RkaOxvZpOOwrre18S42eHNHgopJXlE5E/hCzlD1t0xa5nFXBAjv+ZgOUvn2VSYyTnOys6NDlL8ZC/DtwGY0EmpwE1p0WzDcRaAi7Y2aytFSxCHGM6MdzecNZnTjbLZpg2Iei0D5wdiHGCzJLsVFN7q7OkFJ2pIkp0bIicv3qDOIJ1Q9C/W8N+LEsxWTCzXcj5IhjAIYoS0oAegLclSNOkkqziCnLt+exaB2XCEw4hrZDWC4jEZkwDx0sZ7ejhJnFTCZ6KRKbMC7SjB0lrwCtjWUZ5zQ4tuVd3TUP6U+uu3I9InbUGGAKX3F17lwR7vQVLyQPsIAgMELduIwldSNUKZBG2UVoIyrHBi7qgI7KNVVNhF2RmvvyMxIcdGNrtk1AOqINMXFd9Kyo5zgFBdrhx6wEhtb0Ct8C9g0JAF3pBW+9WtmBMNN6Nh9Rji4Z7saXI2LfXTL9xL+EBefdjYqNoAZzwkuupPwXWUFp7j4cvmNjG+owHuKi+4ScHdXLn6Ci+4CsKmqoDTzvc9+Mp/cCYq9dClYgO6BLbm+jYMzp9KAtvF/fzLvtC9l0vqQXHj6jBRdc4mtGl82FlYGLF7IOQ3RRdjNbEqb/eid9PYcHSegZt7gVOsXXY+xHmDO6AbqIzZOyLyNd04H39TdDaeIj2XqOkcydR8Zwv0FqptwRjqgiwVd4Du3NbZRW4NhgPBMzxxKWytwQOWMSd3nMECHWtRDdtdZE1ZG4+iNONRDGCruQMMK8Uz6/lzvMcqP40jH2NDBtktWX3q8U59E0VWFN25f2JUmS1HDJUefHmV15pFg6j7CwyXCbD8zvcKqEmqCGkvJfPeNnL+6S+oj3GCNsbW1I4ZxqB4GXeTB3GNtouEacyRe/DCiXKIntR3QkeT+cxJTErFSwhzdNpvZhHBaeJQF0aYixqeKi7DWqvjcYz91GjI2zo65tdraTuehegKMpHCNkAxQonUUOlpDO1nP3zXtPT5D2NharadwLNG11OmBtXjIGF85vlCL4dDY7qhXymxwY3SYbbAG5zmniBg6n808cgOBJNf+k5ArnAlrRpEaW417vVpx9fZRoL6PKsLsLeBQ9yYsutytNvApoy6ihS/O0gXMLU0pwyiJF2rXDXvGh0UX6ZR2HIcsXqGjBLzDoilvBZlQ+YyxsztwlDDDxKd5u4Bl3zZB0Wld6C1mIrgfke9PylxSn4b/UNV+CmPUu5BlZhJINZLqg7BhdoE9U33Uhi/Ya4yl7R7q4AxpA+fSTbmy/iKs3Qd70H54hjuJpbukITpe6Dk8jX0fX9wBOlB2HyA9fjLWaonRXLjB6YwvyJxG9HTAF/+J2W9St1vNXvdipN5X/4M5V8+1+btOr3ne/1IZ1BtFO6JeL6GxClIYeiKek5H68ckTL39kkcrCo7M/okhFEUj26/OPo5KFcP/IYq42/JkTH/kK0fOBOFE8578+Ojt4QVwyX6y4+2t74VCl4IpVEEfstB8E5Nxf/M7oP3QxpOrhIvZd/XjHPSWG6fc/00KLIsnvYvKPMDaF8T2I+Ir/y+bku/NHJIlI7tiCK5DjdMpycVxO7o+Sf85+Mk8EahpEQnhhtptM9c/kSUgyES9MOkvm/ToGc6zieeBhTL1jtklNCY1Y4Im3lfpQMqY+XfzmYP5QxcJeI0nD04EXM3LFXuniNwk2By4H5bAwyV1yOZxUWwwlTvw3xSDEwmMk8+g9GuksnUoJpG6eZ+xAIMQT7nNcqQhYo1m8atQoGSnPxDKRbM4Tf470J9dVEgSY4uBz9f/n0Ruh/pyEzI2lenE6YG/Cnw+FrNTsqDd6uxTKe7CU3IgwJGr2/NR/92f2fCio6/642jIpqXJ/KZP8d/0XKpmaQeL1OP3BXwlpvT852ft/JLSWUC4S8g97I+c6+9hlq98lEh2qiFZpLgrxGJU+9xfZ/MlSVMhN9vYf2bzL5kFNK5GkEnrqOZjvsqPdu7Yk9LeYhX+kkUvjlkaxpB65of4iposDmCcl9/MtyTgBY+6y+vKAmilJw1OPHrUhvCWUBx4etzx0TDIJT25GdJU4jvPk9BN5nPvzQOf3/xFKFtSexYvKh7JL7zNb0vgT4v9ILudSCn2cqusVV968h5osN2KxqLwwoGbIWPg8EvKPPDJ5OBF1n+eS//yjQlKB6F5Xx5mq47PoRSRXJzMTZDi6/SOIJLB/e5yZSluCOH9VH+cr1/96QvrzuWRhyCpuoJbcZbdEc8Ele6GeR+5i749MsjMN/XGu8H3mHmcYeksiN4LOifp06rvHaoJsyeQ2feOPMJITLiojnRL6Z+mYkrkTcVR1IxVKsSay+LPJZOdWMtIZoH/UyKZQJhU33UvOjlD59vpESt/RmlFlnGbyGPCFesM7TsfuM6HofCX9uz9S2ZSKE1C161Z8o4GWyX9u/shjUx7p+39kkshkwmTIw0jH0EY8PL4dWFL3+ZQG7ml/MiTOSlnw5H7ikHqtVjvRNUPIQ580jMtNnkEhdYPBjcf12JN+GQZUO4o3yatRXfdNndNwyebqVVKIZEnnuoBF8sIQ9VPyzxZxx8iTLlGU6xPgdsbaxsrahRvcbjtBrWNFLWNAJaguD11xOtRfSf2s1iYOk1xH/NTyUX8Wsbl+5yd3WfihS3ZoEmjUq4deek0X0Vv1ZPAV7XFKoHFWq+Dgg8z7xlm9guhlmrJ/gF7FJQ+E3j5W9OZZo3206K1t9KMg73ZqTdyYbYh9TGG2cGN2gUazgxuzXivrgBicZ7g5m/USNVY/4KwjX52NToneslucvWarRvpB4HE3yZQ/+S51YIStT0Z1MfPk99Q3U5PQiAJEH/edPmm3e+2TH6Q/p0HEf7L1TT/0EgBxOfrOnY4b1XHPexAXI0Nt4EaFHNWGmtdHA4vc4gAxrDJU5FZHr0Rt7E9QsW/I9TLdsT9kPVNKGCkk2CpVjB2kjPUW1KQ9q9VrSCEbTbCRPFP/H5yQnXaJ/sFbkIpnrmzBFx65S9KsNdEMqdFtFoJ1SKVyACSZ0KTPRHKHVl9oIo0aGuxdqKRPudtYsUHs4E+xO2iHG8SiGOqOA29hRFpqHxpnaxspMND8XgM3esqYIpd8QWc8IufRkklfjT1qGQBN9rUMWn9koGVwRLyddq15co6MuNWF9ws3iVvYiUFi75vEHezE9W4XGPkMN3CjAeEWbwDX1TrGynoGEZNfsxqOR6OWFJ2+mmChN8paNiAOXj6DbzYS+NFWKXI0+C3QeW7gt2rI8YG8zw/p6zXs9Dsd/PoxL/x68zjGfl2CdZ3881HjlsMyzq8nDmm11eJ2mB8KrHF9EP87O00nfVcNbUh0+xUp0EzoXQzuLXuNQ31sU1vfklxPbezH6YAC0KcJU3JBZ7r/gS5h4c/xnmABYjcaremEXJ4fI3qzMZmomX+s8NPx0cK3epP/HDH8ka74Zq3eQRaE2SXsUQSOc9hO63hg20c0sm0FOzki2rPOFCkmkH+VY94jH1VA3I5O1kUNCziFOzqtEzUsyPFdCtvVt9nrtRPHE/mpNBkuaRjyECk8zLWLTfpelei7wPStCsGX6gL4K/izCsE3ahDnud9vHVJvN2ttMo69iIdpoIwM4zASKybzsOHHPSPRyAJE22eiUMpveEOc77fn06JMjksG4z5xRleoJdBrFwQAkp+XCqDVbqUz4GRbBlL8TFqZ6PtpyASyNSXaEFkBqUiUFVQURKokEUpBJwwXFGUd4oR4snwLdZ2l96t5rfuPK2KhGX4Qs3Cb+0OVcOA1gf6vUji8gldlpNDCKgWQFXE/dEhbZ4bgtg9BtkPN2mm0eveTPLj+eYlmNOQgKz4lT6I61SEHWeWafNhokHEzOTc/7HOUDLZ2TLQt9LCA87iFf2gBaTvHRNuqwLIFpNVj28BNC2JfPfbPT9p1rDd7QfSwRuwcAWK3hRQRZFlqxG6zddAVE1LG7oEzPpyTxhnWuQq0HBVj+wgYO0fA2G0futJJII9A6/QOfSTZ7INadsSpd2tIsWFW6SfYTbTYOx3tzuFhz5nnneqrYWQiXpg8ny/YAR6BfER5eEccH1Ee3hFGQpkAEieSPEDKZzdX3wdwrBvRMHLuu54IY7PbFyLcssc0Jm+rgUbJFq+pNttAhG2shKWvoJuEnXrtFSdi+bvGW4wHP4o9rIRwg3iWPN1BIS6D06sJ6dQb7cv3ulybJQGQApeugZACJ4TOWxixFXGTvm3Yt8zSiQ0fAHerAFxvwQ1x2GlXgLi0kZsCX/tP3OcD6s/JxegO9fJtWI7tRIob5WUrTXWjNlY3Ox5Mhxwnsa3C2iTuHB1xr42SuNnZDfHoRqkGctlDggnmrG5hNhvKWT0Gzs7RcAZHwdnDPJ6lQ4IfcSIeT0jO9lFwtjFvK1CYzk2jWQvxcPZ2o4UUZhsxpuVo5jXMhmnmObnw2OtJvab+HSHhBTN3+Wx1ej0Yk7qO3T/0dctxLIhQrRvXiMoNP9FX1VBjlp66a8xuu0VuhJvO31B4jIypTxdoM1hL66Q18b1aoTQiE+qzd+h/eHSowE3sa7V0k8acsIOdsHS4LCecvyp/BSmctQ5S46b3E6x8pcPZG3xtHca+ekBKaL0AFWG3fbgD+NpU9isZt5DyWe8Qr81288D5Dnz8Onr8mkj5rDeIjA/r+EHwYZ6fEHxnWDcHALgu2k6AIHDtg9YsPbXyfqDJlYH2G16bZwfJJ9RXj53eskjSLAfoR/OkMUB2+xYq7lbAHU6a+hp5fzrs5+lPqKAN46behILuHh309KyGmNk0Y0v3r9uGrh0FapYnojUXUtDSG2yRM6DSJdPWSR33sELT5tsRGYt57GFJBdrNrrSmPtQKGAXaHy29G6EGhZnMPzrvoIc9jdMJfK5riAWSh/rCDvp9qHRk81PmNnrm8heyCtCHvxsd2z5UlR2o9GmLydnCzVk6BSPnjP3M7elU4xKIrV4yePMrTnmDyPPXQOpS7+kiJo1WQOo1cjk7xyIQ6PVclEeWZsX/ZXPSSrg/kczBi+MIIl0bsIkBuq6rd/hjPKIRHTJtkmXXpGb6mlTe9LiDhRzqDHODPF/O9Zpe3BlxtxEcAfJ/Rnebl+IuacRe6Buyi3E74M8jYI0TrIef1tZagRJLBvQubDX80UzIGasob5BiWjuOGjNtnEEaOg1a7b59KenbAfP+vwtnzdyt46kPsWvUJlpU20CtQr3gkpFpHW9qKYBCShh/NOqIGOu7YWxhYtzROLbwZtFCrccfrc5BMQZ8fkoXPKJKpYan/eynvxpDpWS5lKaLnjO5iYun3lDWRKR79twYQpiJKBKrjT/oZ/9lJAKTvABlXuIr45R+DEW+9X13KeR/HRLSUIowPBkwujoorBEP3b0Dlaks9xmQvrTFTtKg0ITO5x7bO16Z0jCf4V0mV9JQYEFOwyvm6UfZO1MTkOl6FTDPY/tXg5BQEyn2RHXWMKgacFTTWM64v/8lVVoRBgGVNIpDwjy2Uo8bno6pvxRmBHz3RHWjaWf+GgLJEe4zi7TJlN2hV89KbsW//349ZtOI/gFCxkEgZEQG2ihm0dePnzF84GA3bPHVUI327uZkRnWnPI59r7UGnPbIsZxnLvcwB4F0iH5EyZ/iBQtPh+uftQIZMZcmZ2ffHFeyl8QNEx6fE2epdrcv3wfqW8sOlFjZV8pVJk7A2Pzr2czRLKtTPmObMPkk1Pxlexu9nRPG6qO/3uLa+axcr739D+HOUVmiY5WxuRePe+dTVG0Uq9VBztF9bgtgoyZWSeqT8nrICeGhOB14ugi4XnsX1N87V+lB2+Iart/RbA/UjeMVmcSr4CAZybf1VN1D8OSLEEdc/Z2ki68PvH4R4Pl/K192D+HyL8Kb8DAS/qHSacfvYNmEjvQpLbqH0NiXIUZUvh0qXWJgHyqcDtqKCsPJxKsLyUJyf660yOkwfWffRB1oIGWlCAQaZAdcV3Q/Ts/uya5XAXWjQyT7m+5fI+4AK92rD41MR9WVH3eZvUnG1FXv7f1UC45yzD0viYDFnnoo/u8hqf9ttgPUmB9BHpzy1JAHqGJSrAc+k1Q/ZGXJ5pIrrtOR/rZvhtLZTpsQOo0r5vPkEucAw5kVDFTmTytr+Cd7Uy7MgHn71xL2bG96Z/7+k/nJyWr6crikq1kaYNax8yf9fvUn5xWjUVILPl4hgCnreWYwaehDDUy8IqnqUIM1jVczTw/gQSgTJ5D07TBQkmjH+zjpU8T3V2PxU49ZvtKqjPvE2FzzXiTf8wAdmdLZHlJe67UWzJLLqXT6pJD6sahHUsS9j9QOmMi3MVOPv4/QeNPAa++CLpuUD1TZ/PvfwG0HMNWS+0mkNGFKDxePIjXdwtOB2r3miXr8apQWlAZco0hGn6OlFPFi+eXLqAc0x3KYoUdXgTLnLzzqL5gyouLA20POZBtq7ay5hMLyw+Qy134nXM8e5UDGRM2xFdN30Vm4h2HZMQ75NmKR2o30Y56o3Uk8VXgH+gzx/DXw1IMeMKG+5Hpyx0IeRtRHEAXYMWCadH2I81btZvONCylfzdQAtp9yolG8Wr0prp97uJncBkaK1eB4X04BbQ5eifDrzXODouxVwjXEtZ8mu+15NKwH41o/qLvUa0VHJtJ4zLd35+PLdRu49/Ex4Xdl7KY/XvtELSx3Lwcn4LBrrOqTSP7EXUYm+h585Wnu2Dx2v34H6gJvqndxEMWS7WWGgbsjDvOeTtSC0Yem/oLcMY/RkKXBsK+36MwAbYkSO0U67jF/D1Oubq4d+3FSX5XeTg26L591sAvIiSTl/tePCnSIJefYU0okNM6DetLK29UPnL1oRXbp0TDct0tqvVIKNOTbja6RVekrCkt95s5eU0tU6iilP2d+uPeCWWUXj8kzErE2ryc8YCTJLzjPf/fVgGcwU9EEPPeUxye5m9BVeGM1uS74q76vrDW6WmNkGs9YuOcRNBddWd1ool5RLgPu73FqFotFlg1DbHHtZUbuSJEUp562MLiXzsq9K3/I8dpEvOC+r9bg8UBmF7b3zgqmRLdgPZG6leoX+8/73NWQJsGZg6VzAi6rfB39t3yFLX/vnFDDmExKovtKXEh9lIfLlCldbtLEvGMztTHu34Qp0fr3I5ykMkkyano2GoNG6l9NaVRKLnuj4f+PsnEUlM1DoUzjkhMdn0Dl8EIp0nT/Q6Y/z0oWBzThpkvun1xwb0XOf9JAyH0kvkFVIjbZ7k8+WHf73ieg2Iij/2qOMk5RFnLFXzXbtX9yw31GsrTssX73y5HOgKxPg8mJlD/k7okJyqLOmP7xlVO3B4wuLIYaC+2hTmj05WnZ5p5cGiWIV0F4OqQ/efS2n/pojWZRBZTcnzKQ9zJoCc3XG77GHOt0QXG+3sJtFHC6sDhfbsqCjo6+BYSipmDZ8H6KcUlDkpWB/OrRaACOhsbYqPq47/NbKzV2yajcy8xqd4vOQt2G4kpI/q/wo2y1f/mQtI1y73UrmopnrKYQEyZ1Hr6nnmDfUYSSvbNSjqSg3V5mlbmDdGAwvn5nNw0vu4nlxLOVsol5ksKwly2xSFOmQ+0mjRoRDBj1ntX8yvrZfHnoonhptGzAMGXYY+3ms7PiCrFSWQ/Zh+/JyzKz5WzmFTkhc+5vmvP7Nrfs/N+MZ11g+iBozt20lL1LHoU8EKQkg0ys6MJne7BgdsKkTf2DALl6m0saewcyLDf8f2I+J3/vo/PWDnDumMsDKdwkp+YwiNIYf1pU/iCI0i44VSfR1bnVqkmdmm/pMtp7agwIVUp0EI02trEOoLnGNpTeWw+J5/BWU/p4P5MbkYFH3aTt4EEBSrHQEWnNmJ6yHRJdwawgVW/wss1X8b4ZYd5sLjy9lOkR77r/XFKRlUWRt1mltaL5OxucacntDczqIxWHjD/t/6YKKJUyqd5cbx+3YHdLZQQrDpMuTLOSJlJvBGkX9aMB1cvxkX29tbJb3gmTK+qrhyfjZOYeGJ6+qR5LTtTOHs9me+hisFs8NR8PC013XeVPSdX8oSfCPfQA2DGVrjh0EExJ8eB87lUWSL2nDeJV2l8oPD1/jWSc1Hrel3djNDYue5j6C7I9eTm7Apswz1MW179J94I9FFqC6uayDaYDCWj6qEJjVbyr0BaWk72RtSoj397T4Q4YMs9yqCziTzUZmReeDui+61+Xvam1QUC+XTvfv3wowDmkZF7aUyj+8kQGIwG+dCzuY5r9DBDU5ZE1U+w/Z7XMkgynQfJge1cB1lyKR5lGESNT6j9/OY0xSl3LZTTUW09SO0+3d9JA6vtQ2RJM7v38vGs/UJ+ykW8DIfZ/plS2us//FfFgVtwvKG/YYv9lNuo1qIWoPC8dCEiK+aRHu8mPlzTcRzURY9cuW/Utp8zK2R2UCk12bJE0btxP6UGgO+E5z4WQLpufjCR90u0MRXIWON3HTTAj0/qsZKb1GiyWPnW/PO/diEIBUXz5zRAzmGar1JMLhuphvC8fkGbxBpitJ6JBroS3h6vrXViX6op6T2ml0ewO+0Pyi71vrd2SxZByrmtfl4nHodGKd2BsLdy/qfusttE5tgErec0qx/rHF+7ziYijvfj27TroqtpLbQ7jYk+vZ82QFvOn+7jrakaOSl5SymGSbh6D2HsmjoKhX1/9Hqqqdw6UhMpjmfRDx6EBGrbGge6rSvqLLKWi2otnT6umBWscrLMC9+KyAYdNEHX+tkZJdRhxgiWT+/ZtrJ2CPLiDQ43Zmmf7WCrAy14jIImVli07UkRZh54GNNxDkeXGjpgO6oSlSHWHoRnoGThSUsl1byNW9HHqtiZojqceZA/JeFt6G0TpZTR6O0Kh/3ogVCOuPw/JooImSs6FkCnDBgjkBfVCti8ms0dOvQGClDdzQDEXIWw9gwmP5rBl20eotF7s3XhWsgxggYE88mhJJtR93kfBA2CgtIrT3qIkzU4RxzJIr69gKEdjPxd9CyRls8SLJIn1UH0U/V1vsU9PyhZSXCNOV8p7kl+fimBGgS2XzztaYj2kO2tylzKWT9Rl5Nqfc32Fef8NrHuwqOd+mlEykMnp0dePZAfWCvwEL28smPVa2EeXS+CU109AM7qT/GAzPRT8etjGV8DuJdnLtH8blvbvJ2x3e5mjXzJszjOXe9A0XzRw06W+HuupLSOMvf1sGbsaRrH6+iDpmdEeHIjlIva89xYumxpT98LceyjY1gHNMSf863X/jkbMYSuOacTq9iPm8tAVp7OYe/OkIbcywnx3Sb4/PXEzM7HwIE/c84bC026e+t82a81OT1nAzUEYSfHMNn7zlPyz/s0jn+s+JKNGWYH8IjOmTJjV5FcqtCrwRfe9XSILxYS/ZD7TpVgH2TvYRWA2MWpCyED7yb4u8FUZMdRrxX4I3RIJIqYYxqN77NidYsCnTFDRpHaU1eSpcQ/1tdEQuwCM5M12iSxHUwBTprxUsVrFassiVyIO0avBeq2oB8tkR/1eCmQyPEZB3Pv8p+6XEL2hp28WWxK0S4R/U3o18IEe+DA5EA/UhqgzmajO2x6MyZhy/0k3HMYukDaUbfgbeXCfk77TqtWwC6RVnCCdEq73/0UgH5xNIZRF0Tsv0y/td7K4oUHqv6AWhGFBdkqkP/1OEGPqcj8S4RK9LIq32zqlzYlfyIK7UgRLYTZ7wScM85Jcac/ic2HgNym69reDfi8E0p8rVaEMrSGVc+wS6Rg21k6mBbkT+lduBeTxFTNEcn+rmCw+SZiXnnegPR2X+j5+SRiqs3xU7heSCBh9xi+JdtHkPNvFnIh93TnpOan8arYYwSeRXjEwX6aX6u8lol7lv0YvD2OGlLiL/zt5TOnMM/sD4ROEoT7L5H//VhBMrrhvdoHDJ4qOIYodaI17/LanMSF2YWk98DkTyuxcqZfYxdExWh6XDu59Lo5HNiMDKV62KsYglEYxfrELV7VKmypcZMtXT6cLnKbyWIl57LHwtF67PCcXQ3GOXRKme2axSj6WRLPebZFvIxY+q4/+LzL04jBxXdd/jl1C3aIeaYLPleYPLaELTwh5APIp0zj71/LRotCHy84Lj9wlGSdvY5dKrwOmbz+WygWX7EWfvTpM/uQuy+SiJtKLM/4v7OIx/LwyF+N+LZ6iVNCLo77jNeS8Ka2yqpBWMU168H3pgcsopl6uVd4lQ749OMNmrVZDv4ha9vd3UhnNlS5xk24Pua499xdJ2e8hdZe6iV/6e/QSMQ+nSmvdd4nk7CdDj4YhueAzyXRfNd9n3low2OVi6pfSQZNNuajn5LNY1y6rihgMDxlietwI9XnzivAbZw/t0me37/za6VtIEQeVmQSm71c6oLqMZ+mWsqCRMsXetNdX0zVJpuQqnmEXg6EqW6UtsG0xDPX7VZCBkQ9Z3sjYlkGeGHyZvlExSZQp//iZJI57Hoz7TlXmQNvYHUobCdtSSLOEKzATdqgVs8xQ5XJUZT5AXZfYlsXD5LYqUjBsxlZp3bBSX0/r7Qb+vM8zKHWYIHe6tZoOUnGG/nqAEQwv7x8k4N12rUZlSL512/UmetfZzEuyG/S+6+rmbxPBffQH6d1ihkX5PKSUfIj+zAcsSpIBO9iBjREuf9MhBR6N0QNDOfopsNMn7Tb+fattpGOX9uxT6jDpCy60IsMf1TCM957lFHfuSL1WmX27Z8CXtlRT+GkfO7BZ/bN88ldGPCbNHv4FbqT0lM+TTakf0G9cwDv1jwl2YNMKtQMeDBz0W7W5lFul80tSZMnos+67MhCv2NGN+4WWy3kg+dzsBIKPuQsVVEmZp47apysQUjDv1toN9VBHE8fUp4vKJTI07fzqIcUPXLTCm3ZWuALWPT6SC166bFCayIJdBrDBlOFodE0u1Bfs2MBm6RC/o31m1FAofWaSAicHp9rxws5t5O+17LaxlHuI3u0CSx3YoL73efRGzl8DWYH6OWauL4QAkmsD2MHBbuGl4LpTtBuRvvs/MZf4bZgzqGTmAv2QVeGWcgcqNXfNrvMrp5L64ZOQq+S6zHu65fQc/UGRUUPLdjI4J+P+HfpAjHmCYGnYOOMT9MjmzSBLl825JyMHfYU85UwXDRtL6vsB+tNAswqa5enYiEWVSAM1TJnyd4ZTahGdzAX6o+5mEdrOLR1Npth5jb3KMnln5Nz00XukxqUQy6Pfkb4iMxZz/HHVNuhyfhyNyQX3KmCfmhWd7SwTHWVKuhhgx64bzYssl/aFFMmtp3l1TvyNioSWCz3JV1drvR8EHqc+/mLehnlqmaSYp+tXZvRh8z2uqD9fMg998TQjAcDybOFqkhRjxQ5tnJ1Zbm1XpNlookeuQ+q26yF6q80wzMuXl82A0UcXujVQYB1J9FlEnEgyXZ0IO369VjwltUx0uf7uEOdmgJ3avEthF1y5Rp/NZNgoXbvUnuvJFH0Nsq0TYLtwuUJ+IHnMvCIJH7C519cTxb9axbojdgWiaqZbZqvXJmTk3GCHNvYyyxOR6yl6vWZOcTvn4+/B9xF24oZxtcBOk//D0F97bBWHuG6X2KKA0R/xG5mZ5QvLJsQ3/VsSCaK+Yec2D7jt9qsbvlhGL0x/JX30igzYXLkR/kL5H7qc1AT9uZ9ZYctuvo/76M92e8WAacNurMdD9MBt0LSd8Xm9jj8xEfa6/pjNeRXMbmPv6tmZJ2PGdK514FH8xwAtUNt7zMLl8W1bY6YekdQrcMMXrFBPyq07sT30f2CnNg4ALMNmYzHjHqtQpNQIotkdcI8d9IYZWJPSFPge/fw24ieW4YTxD/QjbBYqsHO5bvvD6hzbm3Wx7Xau22MrtnKrtmrqVyEKbuRjWU5xFoXCr8DdRyMpyW6nVtQvQj5nBx+6wTp2fkOxWW5dt+w1DitxHQ56kWvuhq6/ckFnOi3p/DVi/hz/qge+AJoKol2BCbAT8G4FwMEqiyfc392Ioe82ZgRbLK2377dOvQrFtcwr7XYhpu9B8mGkv1J26xPHr9mMzENLeybHT64BBkKi39i7oPlpk/6I1LEjG0XFLOMOGrmBHrlotFsGzyfKaCXXLv5ucMZZt+UeNhmgD7iYlb4tx3lIHPEUvVCJPvoA1iIzB08aYmKnNk967eJrkxH6Oh3d4klvbpyXJh7jz7tsFJFtN2gpIuGKzEDxqnAEaihxywpjkx8X2IHN+/l2BvkdjdgqRl8yELZ83h0LGK3AHU9jqC1LROpSaizve1eZC2/mdLcc+Ymj/sXODJtKnrXERJ+IaaQtWQaR80agWYNH7PCGgrN0wRwWkakIqlAMtl4HVXKOg95mM7sR2plsjnNDpkyuuF8Fa828vW3ncjtT9FffjHNvy5vLDv47ImDdxFLgimQrGfVALQ8CnQf8oSRQg3zKPObq627KKK9E6LBTdLstQysaX9cBZRVI5Kk3jQVuFx+fqudDP9qweVvTCanAJQIjlmbpd6UHXlQ/Hm5so4q5pSKfyth9xo68taItlVksJUN/sFnvGJV9Lef3A3Zgo3K35SDfD+7O6uhzF4Czc+7HlxVpjAUNfmwhswcae+hVGKzP8VC5siqWJonuRTwUyuL2I3l8oZMHB/2Shh3ux/6RXRl4vMbfBK1XJD4rP8RizlZps/FgKXwWng7pzGNJCVv8XYOKE71Z/gh7WwrM88hE/4xdCE2wup5bQrig+E9BGsbhV3ntvoV/JUQUVGEKmMfdgNrgelKNVWBsARZ2+5YIsvu/WYf2igqkByqQKuwNxQTsRvnzoy3+ZPxPniqgHGudnSmGSiyCHSrGu4tq2EhGER+LLIEtEegk5mrsj1DVPwImAo+d9v25FAvmizgkEybDChy7FaPz5XMfMwmMqUsexYriBy9uA/Va6X1gTe5Xg9xU/vV2afcoQ58M9c1q/NxFpV9vlXYJMu672Pd1K90KwBsNN89KH1Zk6A6Pki7ClZjxRh7kWWmTN4eP1GZXkYFvFLf58vVWTfZKjDwYvdSp3jI8VftE5W4Ylz+ZzKn703HSNxx/2thO0Kd0kWf5V0MKYDdacikMpKBzl4ZRRQQA1jY+F0BeOj9Pgq+kGOxXwyVf0BmP8tWQL45KSsN+Ulz3R9VEt58I1xOS5FgqL/+tmjIofzl9LQNneF0RdjN9pfylzhy+GPyuhhTOjKJa1grgdnheEXRwBXDLoidPvFQF3yg6U9oDzPHzujP5VcCqyMGouFQ6ISKXQ0WwoWd/ik2ufTKIuTevQJtX445cnqJsL4NHHi2Jwz3uCj+zC7HLwsjEL381NBfFkXsFTkArA19vQlXBXtNHQuoCTdXgNw58yqf15vjT0dHGhh7EES/6R/pTOYD+IqpKUAzcBnzkUkmgMt6PGf4ofeAZMjeWPHo7HepMb04ulBxeqIe+IkTLSO8vHRV9F4B+qXyA9CV2fnMClF4Aa/6qjLzZdNB+6l/SiD0zFuBf9kYpyvJ5sO/sMZVz9NhQvT/W2Lo1dFUmvNnMqXRi05r+RuC/d2vcyCx/q3xNnTcOqIqKbxmLvbRnu5bA5PpHZWa9aeHZj38W46iMAIwjDgsLR/5Mjj0TA+fe15XF52SSVdRIop74dz6joorNrp9JY90/XD1JWE0plM9xzaUwUovBjYR8q4gAjGifjQGUCuCCK6+vEuiAHs87ekWG3WC32QpT9isRor/Bbua42myBKfX1ZPpQkREH3P5T9jF3pXhhs2osdnj871cVGXlwPZdip2db1YjuGSWHyp/srkWgLzRK8VqVbd5wfWyiW5kAslYMZEBDZfxWQwodqPYyaynofG8q56QK2x+8HsjO9qox+Iap3yt9xpPjK8cvqsr6N3o7l0/vy+HT0z3t81Vj/wd39B4fHysy9ka3UAtPP13vWdwj8XbO/QXHf5MVrNLNWgKeiNEH+etGMej8aqMF94iHzyyK0A94G6oeXQ5+MSTZbocd3XB0WuW3uRydz5SZN1xS32ce0TOAOPEsfAsj/Nf44UyetTCU0hvSmVJ66O09s2eqNfwd85LgLlXTgEZ0pix/7DIw9r7yiT25DKbql6QvJcV/2gU99x/ZjAy9OKyAvw+59SVJuyy963ihL/nl17zOo6UyBCuR09uBymwvSKMa+cxwln/OPvRoGJIWaVdEAkZWa/kb/u8SMC58Zjce63X817/PwJfCWhjVmAxQZU7X/EUD8YLOJHcrIoytm3/2s+GS+SwRgHiKqrE5GLGh8rcf1zK4VgvC83j6WjlOFH92lBkkKR8gWwvBGd1WZBmANVFaw9/QNyZJg9yxlVh3gcQuBrgy9oYcmhURALyZOL78QXq1Wo2MYy/iYcFcwC4NsIoI79LQQjjJd8j0FLUasjCKRAHsEYksvGR5VEpJmPYT0KzI9soR0wsEuwxMRQmgKCaDHxWZAOZmWT6ktGaXQr2/WiUl5CsiBHCnusrqEAKfr94VYkWEYCwEe0347jORyeUjGV+ib65rTAQARfjAZRRTj9xUaCbAxxTS9IJjDjKmEqgG/Q4cp0chnxdSxMHRieAluzh92tdhRZ9iJzfuEuZJ1jbkl2rg/XneZxz9xSKjcla9UfqobS2BOzrngkzFC/6ztqZZK7x0avWa3qFJ/BB/nolZL6VV2i/eZtepFujVnjH1y8fP1/yP/OSC67qZ2NHBqoVtoKc/YCc3Vnz5hMItcjKQfF6BHCujma+9xlsL4EakFyhJPwg8TivQof0MqpbAtjDSNt5Cok+1Mm8XAcjgpp/0C1XP6nn4jYAt89d0gNTPCXGYvvO/";
Sidebar.prototype.gearImage=GRAPH_IMAGE_PATH+"/clipart/Gear_128x128.png";Sidebar.prototype.libAliases={aws2:"aws3",gcp:"gcp2"};Sidebar.prototype.defaultEntries="general;uml;er;bpmn;flowchart;basic;arrows2";Sidebar.prototype.signs="Animals Food Healthcare Nature People Safety Science Sports Tech Transportation Travel".split(" ");Sidebar.prototype.ibm="Analytics Applications Blockchain Data DevOps Infrastructure Management Miscellaneous Security Social Users VPC Boxes Connectors".split(" ");Sidebar.prototype.allied_telesis=
@@ -7539,7 +7541,7 @@ this.getTagsForStencil(a,"tenant status","ms microsoft cloud enterprise other ca
function(a,c,e,b){var d=[this.createVertexTemplateEntry(b+"Azure_Sentinel.svg;",.44*c,.5*c,"","Azure Sentinel",null,null,this.getTagsForStencil(a,"azure sentinel","ms microsoft cloud enterprise security service").join(" ")),this.createVertexTemplateEntry(b+"Key_Vaults.svg;",.48*c,.5*c,"","Key Vaults",null,null,this.getTagsForStencil(a,"key vaults","ms microsoft cloud enterprise security service").join(" ")),this.createVertexTemplateEntry(b+"Security_Center.svg;",.36*c,.5*c,"","Security Center",null,
null,this.getTagsForStencil(a,"security center","ms microsoft cloud enterprise security service").join(" "))];this.addPalette("mscaeSecurity Service","CAE / Security Service",!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))};Sidebar.prototype.addMSCAEStorageServicePalette=function(a,c,e,b){var d=[this.createVertexTemplateEntry(b+"Archive_Storage.svg;",.5*c,.48*c,"","Archive Storage",null,null,this.getTagsForStencil(a,"archive storage","ms microsoft cloud enterprise storage service").join(" ")),
this.createVertexTemplateEntry(b+"Azure_NetApp_files.svg;",.5*c,.42*c,"","Azure NetApp files",null,null,this.getTagsForStencil(a,"azure netapp files","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"StorSimple.svg;",.5*c,.45*c,"","StorSimple",null,null,this.getTagsForStencil(a,"storsimple","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"AzureFXTEdgeFiler.svg;",.5*c,.5*c,"","AzureFXTEdgeFiler",null,null,this.getTagsForStencil(a,
-"azurefxtedgefiler","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Blog_Storage.svg;",.5*c,.46*c,"","Blog Storage",null,null,this.getTagsForStencil(a,"blog storage","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Data_Box_Edge_Data_Box_Gateway.svg;",.5*c,.32*c,"","Data Box Edge - Data Box Gateway",null,null,this.getTagsForStencil(a,"data box edge data gateway","ms microsoft cloud enterprise storage service").join(" ")),
+"azurefxtedgefiler","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Blog_Storage.svg;",.5*c,.46*c,"","Blob Storage",null,null,this.getTagsForStencil(a,"blob storage","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Data_Box_Edge_Data_Box_Gateway.svg;",.5*c,.32*c,"","Data Box Edge - Data Box Gateway",null,null,this.getTagsForStencil(a,"data box edge data gateway","ms microsoft cloud enterprise storage service").join(" ")),
this.createVertexTemplateEntry(b+"Data_Box.svg;",.5*c,.47*c,"","Data Box / Import Export Storage",null,null,this.getTagsForStencil(a,"data box","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Data_Lake_Storage.svg;",.5*c,.46*c,"","Data Lake Storage",null,null,this.getTagsForStencil(a,"data lake storage","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"General_Storage.svg;",.5*c,.5*c,"","General Storage",null,
null,this.getTagsForStencil(a,"general storage","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Queues_Storage.svg;",.5*c,.44*c,"","Queues Storage",null,null,this.getTagsForStencil(a,"queues storage","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"ClassicStorage.svg;",.5*c,.43*c,"","Classic Storage",null,null,this.getTagsForStencil(a,"classic storage","ms microsoft cloud enterprise storage service").join(" ")),
this.createVertexTemplateEntry(b+"Storage_Accounts.svg;",.5*c,.45*c,"","Storage Accounts",null,null,this.getTagsForStencil(a,"storage accounts","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Storage_Explorer.svg;",.5*c,.5*c,"","Storage Explorer",null,null,this.getTagsForStencil(a,"storage explorer","ms microsoft cloud enterprise storage service").join(" ")),this.createVertexTemplateEntry(b+"Storage_sync_service.svg;",.5*c,.5*c,"","Storage Sync Services",
@@ -9010,8 +9012,8 @@ f.mathEnabled?(this.ui.editor.updateGraphComponents(),f.refresh()):(d!=f.folding
DrawioFile.prototype.save=function(a,e,c,b,k,f){try{if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=c)c({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=e&&e();else if(null!=c)c({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(l){if(null!=c)c(l);else throw l;}};
DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,e,c){};DrawioFile.prototype.saveFile=function(a,e,c,b){};
DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.getShadowModified=function(){return this.shadowModified};DrawioFile.prototype.setShadowModified=function(a){this.shadowModified=a};DrawioFile.prototype.setModified=function(a){this.shadowModified=this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};
-DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,e,c){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,e,c){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};
-DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};
+DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,e,c){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,e,c){};DrawioFile.prototype.share=function(){this.ui.alert(mxResources.get("sharingAvailable"),null,380)};DrawioFile.prototype.getHash=function(){return""};
+DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};
DrawioFile.prototype.open=function(){this.stats.opened++;var a=this.getData();if(null!=a){var e=function(a){for(var b=0;null!=a&&b<a.length;b++){var c=a[b];null!=c.id&&0==c.id.indexOf("extFont_")&&c.parentNode.removeChild(c)}};e(document.querySelectorAll("head > style[id]"));e(document.querySelectorAll("head > link[id]"));this.ui.setFileData(a);this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)}this.installListeners();this.isSyncSupported()&&this.startSync()};
DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,e){a(null)};DrawioFile.prototype.loadDescriptor=function(a,e){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,e){this.loadDescriptor(mxUtils.bind(this,function(c){a(c)}),e)};DrawioFile.prototype.patchDescriptor=function(a,e){this.setDescriptorEtag(a,this.getDescriptorEtag(e))};
DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return Graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null};DrawioFile.prototype.getCurrentUser=function(){return null};
@@ -9024,8 +9026,9 @@ DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer
DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var a={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(a));EditorUi.debug("draft saved",this.draftId,a)}catch(e){console.error(e),this.removeDraft()}};
DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(a){}};
DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var e=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlert" style="overflow:hidden;">'+e+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else{e=this.getErrorMessage(a);if(null==e&&null!=this.lastSaved){var c=this.ui.timeSince(new Date(this.lastSaved));
-null!=c&&(e=mxResources.get("lastSaved",[c]))}null!=e&&60<e.length&&(e=e.substring(0,60)+"...");e=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=e&&""!=e?" ("+mxUtils.htmlEntities(e)+")":"");this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+e+"</div>");e=this.ui.statusContainer.getElementsByTagName("div");null!=e&&0<e.length?mxEvent.addListener(e[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=
-this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(e=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlert" style="overflow:hidden;">'+e+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&(null!=this.saveDraftThread&&window.clearTimeout(this.saveDraftThread),this.saveDraftThread=window.setTimeout(mxUtils.bind(this,function(){this.saveDraft()}),0))}};
+null!=c&&(e=mxResources.get("lastSaved",[c]))}null!=e&&60<e.length&&(e=e.substring(0,60)+"...");e=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=e&&""!=e?" ("+mxUtils.htmlEntities(e)+")":"");this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlertOrange" style="cursor:pointer;overflow:hidden;">'+e+' <img src="'+Editor.saveImage+'" align="top" style="width:16px;margin-top:-2px"/></div>');e=this.ui.statusContainer.getElementsByTagName("div");null!=e&&0<e.length?
+mxEvent.addListener(e[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(e=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlert" style="overflow:hidden;">'+e+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&(null!=this.saveDraftThread&&window.clearTimeout(this.saveDraftThread),this.saveDraftThread=window.setTimeout(mxUtils.bind(this,
+function(){this.saveDraft()}),0))}};
DrawioFile.prototype.addConflictStatus=function(a,e){this.invalidChecksum&&null==e&&(e=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=e&&""!=e?" ("+mxUtils.htmlEntities(e)+")":""));this.ui.spinner.stop();this.clearAutosave();var c=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=c&&0<c.length?mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&&
a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')};
DrawioFile.prototype.showRefreshDialog=function(a,e,c){null==c&&(c=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,e)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,e)}),c),this.ui.showError(mxResources.get("error")+" ("+c+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,
@@ -9041,7 +9044,7 @@ DrawioFile.prototype.handleConflictError=function(a,e){var c=mxUtils.bind(this,f
this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,c,b,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage)}),b)});"none"==DrawioFile.SYNC?this.showCopyDialog(c,b,k):this.invalidChecksum?this.showRefreshDialog(c,b,this.getErrorMessage(a)):e?this.showConflictDialog(k,f):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));
this.synchronizeFile(c,b)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){var e=null!=a?null!=a.error?a.error.message:a.message:null;null==e&&null!=a&&a.code==App.ERROR_TIMEOUT&&(e=mxResources.get("timeout"));return e};DrawioFile.prototype.isOverdue=function(){return null!=this.ageStart&&Date.now()-this.ageStart.getTime()>=this.ui.warnInterval};
DrawioFile.prototype.fileChanged=function(){this.lastChanged=new Date;this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){this.ui.stopSanityCheck();null==this.autosaveThread?(this.handleFileSuccess(!0),this.ageStart=null):this.isModified()&&(this.ui.scheduleSanityCheck(),this.ageStart=
-this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a,e){var c=Editor.guid(32);null!=this.sync?this.sync.createToken(c,mxUtils.bind(this,function(b){a(c,b)}),e):a(c)};
+this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a){var e=Editor.guid(32);null!=this.sync?this.sync.createToken(e,mxUtils.bind(this,function(c){a(e,c)}),mxUtils.bind(this,function(){a(e)})):a(e)};
DrawioFile.prototype.fileSaved=function(a,e,c,b,k){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=c&&c()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),e,c,b,k)}catch(d){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=b&&b(d);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,d);else{var f=
this.getCurrentUser(),l=null!=f?f.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),l,d)}}catch(g){}}};
DrawioFile.prototype.autosave=function(a,e,c,b){null==this.lastAutosave&&(this.lastAutosave=Date.now());a=Date.now()-this.lastAutosave<e?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();null!=c&&c(a)}),mxUtils.bind(this,
@@ -9093,21 +9096,21 @@ b.setAttribute("border","0");b.setAttribute("align","absmiddle");b.style.width="
l.className="geBigButton";l.style.fontSize="18px";l.style.padding="10px";l.style.width="340px";mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(f.style.padding="42px 0px 56px 0px",l.style.marginBottom="12px"):(c.appendChild(b),mxUtils.write(c,k),e.appendChild(c),f.style.border="1px solid #d3d3d3",f.style.borderWidth="1px 0px 1px 0px",f.style.padding="18px 0px 24px 0px",l.style.marginBottom="8px");mxClient.IS_QUIRKS&&(f.style.whiteSpace="nowrap",f.style.cssFloat="left");mxClient.IS_QUIRKS&&(l.style.width=
"340px");mxUtils.write(l,mxResources.get("createNewDiagram"));mxEvent.addListener(l,"click",function(){a.hideDialog();a.actions.get("new").funct()});f.appendChild(l);mxUtils.br(f);l=document.createElement("button");l.className="geBigButton";l.style.marginBottom="22px";l.style.fontSize="18px";l.style.padding="10px";l.style.width="340px";mxClient.IS_QUIRKS&&(l.style.width="340px");mxUtils.write(l,mxResources.get("openExistingDiagram"));mxEvent.addListener(l,"click",function(){a.actions.get("open").funct()});
f.appendChild(l);a.mode==App.MODE_GOOGLE?mxResources.get("googleDrive"):a.mode==App.MODE_DROPBOX?mxResources.get("dropbox"):a.mode==App.MODE_ONEDRIVE?mxResources.get("oneDrive"):a.mode==App.MODE_GITHUB?mxResources.get("github"):a.mode==App.MODE_GITLAB?mxResources.get("gitlab"):a.mode==App.MODE_TRELLO?mxResources.get("trello"):a.mode==App.MODE_DEVICE?mxResources.get("device"):a.mode==App.MODE_BROWSER&&mxResources.get("browser");if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var c=function(d){l.style.marginBottom=
-"24px";var b=document.createElement("a");b.style.display="inline-block";b.style.cursor="pointer";b.style.marginTop="6px";mxUtils.write(b,mxResources.get("signOut"));l.style.marginBottom="16px";f.style.paddingBottom="18px";mxEvent.addListener(b,"click",function(){a.confirm(mxResources.get("areYouSure"),function(){d()})});f.appendChild(b)},d=null!=a.drive?a.drive.getUsersList():[];if(a.mode==App.MODE_GOOGLE&&0<d.length){c=document.createElement("span");c.style.marginTop="6px";mxUtils.write(c,mxResources.get("changeUser")+
-":");l.style.marginBottom="16px";f.style.paddingBottom="18px";f.appendChild(c);var g=document.createElement("select");g.style.marginLeft="4px";g.style.width="200px";for(c=0;c<d.length;c++)b=document.createElement("option"),mxUtils.write(b,d[c].displayName),b.value=c,g.appendChild(b),b=document.createElement("option"),b.innerHTML="&nbsp;&nbsp;&nbsp;",mxUtils.write(b,"<"+d[c].email+">"),b.setAttribute("disabled","disabled"),g.appendChild(b);b=document.createElement("option");mxUtils.write(b,mxResources.get("addAccount"));
-b.value=d.length;g.appendChild(b);mxEvent.addListener(g,"change",function(){var b=g.value,c=d.length!=b;c&&a.drive.setUser(d[b]);a.drive.authorize(c,function(){a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash()},function(d){a.handleError(d,null,function(){a.hideDialog();a.showSplash()})},!0)});f.appendChild(g)}else a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?c(function(){a.oneDrive.logout()}):a.mode==App.MODE_GITHUB&&null!=a.gitHub?c(function(){a.gitHub.logout();a.openLink("https://www.github.com/logout")}):
-a.mode==App.MODE_GITLAB&&null!=a.gitLab?c(function(){a.gitLab.logout();a.openLink(DRAWIO_GITLAB_URL+"/users/sign_out")}):a.mode==App.MODE_TRELLO&&null!=a.trello?a.trello.isAuthorized()&&c(function(){a.trello.logout()}):a.mode==App.MODE_DROPBOX&&null!=a.dropbox&&c(function(){a.dropbox.logout();a.openLink("https://www.dropbox.com/logout")});mxUtils.br(f);c=document.createElement("a");c.style.display="inline-block";c.style.cursor="pointer";c.style.marginTop="8px";mxUtils.write(c,mxResources.get("changeStorage"));
-mxEvent.addListener(c,"click",function(){a.hideDialog(!1);a.setMode(null);a.clearMode();a.showSplash(!0)});f.appendChild(c)}if(isLocalStorage){c=document.createElement("div");c.style.position="absolute";c.style.cursor="pointer";c.style.fontSize="12px";c.style.bottom="22px";c.style.left="0px";c.style.right="0px";c.style.color="gray";c.style.userSelect="none";var m=document.createElement("input");m.setAttribute("type","checkbox");m.setAttribute("id","geDoNotShowAgainCheckbox");m.style.marginRight="6px";
-c.appendChild(m);b=document.createElement("label");b.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(b,mxResources.get("doNotShowAgain"));c.appendChild(b);mxEvent.addListener(m,"click",function(){mxSettings.setShowStartScreen(!m.checked);mxSettings.save()});e.appendChild(c)}e.appendChild(f);this.container=e},EmbedDialog=function(a,e,c,b,k,f,l){l=null!=l?l:"Check out the diagram I made using @drawio";b=document.createElement("div");var d=/^https?:\/\//.test(e)||/^mailto:\/\//.test(e);
-null!=f?mxUtils.write(b,f):mxUtils.write(b,mxResources.get(5E5>e.length?d?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(b);f=document.createElement("div");f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,a.formatFileSize(e.length));b.appendChild(f);var g=document.createElement("textarea");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck","false");
-g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.marginTop="10px";g.style.resize="none";g.style.height="150px";g.style.width="440px";g.style.border="1px solid gray";g.value=mxResources.get("updatingDocument");b.appendChild(g);mxUtils.br(b);this.init=function(){window.setTimeout(function(){5E5>e.length?(g.value=e,g.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?g.select():document.execCommand("selectAll",!1,null)):(g.setAttribute("readonly",
-"true"),g.value=e.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var m=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!d||navigator.standalone||!(d||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(m=mxUtils.button(mxResources.get(5E5>e.length?"preview":"openInNewWindow"),function(){var b=5E5>e.length?g.value:e;if(null!=k)k(b);else if(d)try{var m=
-a.openLink(b);null!=m&&(null==c||0<c)&&window.setTimeout(mxUtils.bind(this,function(){try{null!=m&&null!=m.location.href&&m.location.href.substring(0,8)!=b.substring(0,8)&&(m.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}catch(v){}}),c||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var f=window.open(),f=null!=f?f.document:null;null!=f?(f.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+
-e+"</body></html>"),f.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),m.className="geBtn",f.appendChild(m));if(!d||7500<e.length){var n=mxUtils.button(mxResources.get("download"),function(){a.hideDialog();a.saveData("embed.txt","txt",e,"text/plain")});n.className="geBtn";f.appendChild(n)}if(d&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>e.length){var p=mxUtils.button("",function(){try{var d="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(g.value);
-a.openLink(d)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),n=document.createElement("img");n.setAttribute("src",Editor.facebookImage);n.setAttribute("width","18");n.setAttribute("height","18");n.setAttribute("border","0");p.appendChild(n);p.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");p.style.verticalAlign="bottom";p.style.paddingTop="4px";p.style.minWidth="46px";p.className="geBtn";f.appendChild(p)}7168>e.length&&(p=
-mxUtils.button("",function(){try{var d="https://twitter.com/intent/tweet?text="+encodeURIComponent(l)+"&url="+encodeURIComponent(g.value);a.openLink(d)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),n=document.createElement("img"),n.setAttribute("src",Editor.tweetImage),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("border","0"),n.style.marginBottom="5px",p.appendChild(n),p.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+
-" max)"),p.style.verticalAlign="bottom",p.style.paddingTop="4px",p.style.minWidth="46px",p.className="geBtn",f.appendChild(p))}n=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.appendChild(n);p=mxUtils.button(mxResources.get("copy"),function(){g.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?g.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>e.length?mxClient.IS_SF||
-null!=document.documentMode?n.className="geBtn gePrimaryBtn":(f.appendChild(p),p.className="geBtn gePrimaryBtn",n.className="geBtn"):(f.appendChild(m),n.className="geBtn",m.className="geBtn gePrimaryBtn");b.appendChild(f);this.container=b};EmbedDialog.showPreviewOption=!0;
+"24px";var b=document.createElement("a");b.style.display="inline-block";b.style.color="gray";b.style.cursor="pointer";b.style.marginTop="6px";mxUtils.write(b,mxResources.get("signOut"));l.style.marginBottom="16px";f.style.paddingBottom="18px";mxEvent.addListener(b,"click",function(){a.confirm(mxResources.get("areYouSure"),function(){d()})});f.appendChild(b)},d=null!=a.drive?a.drive.getUsersList():[];if(a.mode==App.MODE_GOOGLE&&0<d.length){c=document.createElement("span");c.style.marginTop="6px";mxUtils.write(c,
+mxResources.get("changeUser")+":");l.style.marginBottom="16px";f.style.paddingBottom="18px";f.appendChild(c);var g=document.createElement("select");g.style.marginLeft="4px";g.style.width="200px";for(c=0;c<d.length;c++)b=document.createElement("option"),mxUtils.write(b,d[c].displayName),b.value=c,g.appendChild(b),b=document.createElement("option"),b.innerHTML="&nbsp;&nbsp;&nbsp;",mxUtils.write(b,"<"+d[c].email+">"),b.setAttribute("disabled","disabled"),g.appendChild(b);b=document.createElement("option");
+mxUtils.write(b,mxResources.get("addAccount"));b.value=d.length;g.appendChild(b);mxEvent.addListener(g,"change",function(){var b=g.value,c=d.length!=b;c&&a.drive.setUser(d[b]);a.drive.authorize(c,function(){a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash()},function(d){a.handleError(d,null,function(){a.hideDialog();a.showSplash()})},!0)});f.appendChild(g)}else a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?c(function(){a.oneDrive.logout()}):a.mode==App.MODE_GITHUB&&null!=a.gitHub?c(function(){a.gitHub.logout();
+a.openLink("https://www.github.com/logout")}):a.mode==App.MODE_GITLAB&&null!=a.gitLab?c(function(){a.gitLab.logout();a.openLink(DRAWIO_GITLAB_URL+"/users/sign_out")}):a.mode==App.MODE_TRELLO&&null!=a.trello?a.trello.isAuthorized()&&c(function(){a.trello.logout()}):a.mode==App.MODE_DROPBOX&&null!=a.dropbox&&c(function(){a.dropbox.logout();a.openLink("https://www.dropbox.com/logout")});mxUtils.br(f);c=document.createElement("a");c.style.display="inline-block";c.style.color="gray";c.style.cursor="pointer";
+c.style.marginTop="8px";mxUtils.write(c,mxResources.get("changeStorage"));mxEvent.addListener(c,"click",function(){a.hideDialog(!1);a.setMode(null);a.clearMode();a.showSplash(!0)});f.appendChild(c)}if(isLocalStorage){c=document.createElement("div");c.style.position="absolute";c.style.cursor="pointer";c.style.fontSize="12px";c.style.bottom="22px";c.style.left="0px";c.style.right="0px";c.style.color="gray";c.style.userSelect="none";var m=document.createElement("input");m.setAttribute("type","checkbox");
+m.setAttribute("id","geDoNotShowAgainCheckbox");m.style.marginRight="6px";c.appendChild(m);b=document.createElement("label");b.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(b,mxResources.get("doNotShowAgain"));c.appendChild(b);mxEvent.addListener(m,"click",function(){mxSettings.setShowStartScreen(!m.checked);mxSettings.save()});e.appendChild(c)}e.appendChild(f);this.container=e},EmbedDialog=function(a,e,c,b,k,f,l){l=null!=l?l:"Check out the diagram I made using @drawio";b=document.createElement("div");
+var d=/^https?:\/\//.test(e)||/^mailto:\/\//.test(e);null!=f?mxUtils.write(b,f):mxUtils.write(b,mxResources.get(5E5>e.length?d?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(b);f=document.createElement("div");f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,a.formatFileSize(e.length));b.appendChild(f);var g=document.createElement("textarea");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize",
+"off");g.setAttribute("spellcheck","false");g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.marginTop="10px";g.style.resize="none";g.style.height="150px";g.style.width="440px";g.style.border="1px solid gray";g.value=mxResources.get("updatingDocument");b.appendChild(g);mxUtils.br(b);this.init=function(){window.setTimeout(function(){5E5>e.length?(g.value=e,g.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?g.select():document.execCommand("selectAll",
+!1,null)):(g.setAttribute("readonly","true"),g.value=e.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var m=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!d||navigator.standalone||!(d||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(m=mxUtils.button(mxResources.get(5E5>e.length?"preview":"openInNewWindow"),function(){var b=5E5>e.length?
+g.value:e;if(null!=k)k(b);else if(d)try{var m=a.openLink(b);null!=m&&(null==c||0<c)&&window.setTimeout(mxUtils.bind(this,function(){try{null!=m&&null!=m.location.href&&m.location.href.substring(0,8)!=b.substring(0,8)&&(m.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}catch(v){}}),c||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var f=window.open(),f=null!=f?f.document:null;null!=f?(f.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+
+'</title><meta charset="utf-8"></head><body>'+e+"</body></html>"),f.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),m.className="geBtn",f.appendChild(m));if(!d||7500<e.length){var n=mxUtils.button(mxResources.get("download"),function(){a.hideDialog();a.saveData("embed.txt","txt",e,"text/plain")});n.className="geBtn";f.appendChild(n)}if(d&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>e.length){var p=mxUtils.button("",function(){try{var d="https://www.facebook.com/sharer.php?p[url]="+
+encodeURIComponent(g.value);a.openLink(d)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),n=document.createElement("img");n.setAttribute("src",Editor.facebookImage);n.setAttribute("width","18");n.setAttribute("height","18");n.setAttribute("border","0");p.appendChild(n);p.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");p.style.verticalAlign="bottom";p.style.paddingTop="4px";p.style.minWidth="46px";p.className="geBtn";f.appendChild(p)}7168>
+e.length&&(p=mxUtils.button("",function(){try{var d="https://twitter.com/intent/tweet?text="+encodeURIComponent(l)+"&url="+encodeURIComponent(g.value);a.openLink(d)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),n=document.createElement("img"),n.setAttribute("src",Editor.tweetImage),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("border","0"),n.style.marginBottom="5px",p.appendChild(n),p.setAttribute("title",mxResources.get("twitter")+
+" ("+a.formatFileSize(7168)+" max)"),p.style.verticalAlign="bottom",p.style.paddingTop="4px",p.style.minWidth="46px",p.className="geBtn",f.appendChild(p))}n=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.appendChild(n);p=mxUtils.button(mxResources.get("copy"),function(){g.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?g.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});
+5E5>e.length?mxClient.IS_SF||null!=document.documentMode?n.className="geBtn gePrimaryBtn":(f.appendChild(p),p.className="geBtn gePrimaryBtn",n.className="geBtn"):(f.appendChild(m),n.className="geBtn",m.className="geBtn gePrimaryBtn");b.appendChild(f);this.container=b};EmbedDialog.showPreviewOption=!0;
var GoogleSitesDialog=function(a,e){function c(){var a=null!=E&&null!=E.getTitle()?E.getTitle():this.defaultFilename;if(B.checked&&""!=u.value){var d="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(u.value));null!=a&&(d+="&title="+encodeURIComponent(a));0<C.length&&(d+="&s="+C);""!=t.value&&"0"!=t.value&&(d+="&border="+t.value);""!=p.value&&(d+="&height="+p.value);d+="&pan="+(q.checked?"1":"0");d+="&zoom="+(v.checked?"1":"0");d+="&fit="+(z.checked?"1":"0");
d+="&resize="+(A.checked?"1":"0");d+="&x0="+Number(n.value);d+="&y0="+g;k.mathEnabled&&(d+="&math=1");y.checked?d+="&edit=_blank":x.checked&&(d+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));m.value=d}else E.constructor==DriveFile||E.constructor==DropboxFile?(d="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=u.value?d+=encodeURIComponent(mxUtils.htmlEntities(u.value))+"&type=3":(d+=E.getHash().substring(1),d=E.constructor==DropboxFile?d+"&type=2":d+"&type=1"),null!=
a&&(d+="&title="+encodeURIComponent(a)),""!=p.value&&(a=parseInt(p.value)+parseInt(n.value),d+="&height="+a),m.value=d):m.value=""}var b=document.createElement("div"),k=a.editor.graph,f=k.getGraphBounds(),l=k.view.scale,d=Math.floor(f.x/l-k.view.translate.x),g=Math.floor(f.y/l-k.view.translate.y);mxUtils.write(b,mxResources.get("googleGadget")+":");mxUtils.br(b);var m=document.createElement("input");m.setAttribute("type","text");m.style.marginBottom="8px";m.style.marginTop="2px";m.style.width="410px";
@@ -9329,19 +9332,20 @@ a.importVisio(l,mxUtils.bind(this,function(a){d(a,e,g,m,f,n,p,"fixed",mxEvent.is
g,m,f,n,p,"fixed",mxEvent.isAltDown(b)?null:p.substring(0,p.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight)}};mxEvent.addListener(t,"dragover",g);mxEvent.addListener(t,"drop",m);mxEvent.addListener(q,"dragover",g);mxEvent.addListener(q,"drop",m);c.appendChild(t);b=document.createElement("div");b.style.textAlign="right";b.style.marginTop="20px";e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});e.setAttribute("id","btnCancel");e.className="geBtn";a.editor.cancelFirst&&
b.appendChild(e);"draw.io"!=a.getServiceName()||null==k||k.constructor!=DriveLibrary&&k.constructor!=GitHubLibrary||(p=mxUtils.button(mxResources.get("link"),function(){a.spinner.spin(document.body,mxResources.get("loading"))&&k.getPublicUrl(function(d){a.spinner.stop();if(null!=d){var b=a.getSearch("create title mode url drive splash state clibs ui".split(" ")),b=b+((0==b.length?"?":"&")+"splash=0&clibs=U"+encodeURIComponent(d));d=new EmbedDialog(a,window.location.protocol+"//"+window.location.host+
"/"+b,null,null,null,null,"Check out the library I made using @drawio");a.showDialog(d.container,440,240,!0);d.init()}else k.constructor==DriveLibrary?a.showError(mxResources.get("error"),mxResources.get("diagramIsNotPublic"),mxResources.get("share"),mxUtils.bind(this,function(){a.drive.showPermissions(k.getId())}),null,mxResources.get("ok"),mxUtils.bind(this,function(){})):a.handleError({message:mxResources.get("diagramIsNotPublic")})})}),p.className="geBtn",b.appendChild(p));p=mxUtils.button(mxResources.get("export"),
-function(){var d=a.createLibraryDataFromImages(n),b=u.value;/(\.xml)$/i.test(b)||(b+=".xml");a.isLocalFileSave()?a.saveLocalFile(d,b,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml&xml="+encodeURIComponent(d))).simulate(document,"_blank")});p.setAttribute("id","btnDownload");p.className="geBtn";b.appendChild(p);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var E=document.createElement("input");E.setAttribute("multiple","multiple");E.setAttribute("type",
-"file");mxEvent.addListener(E,"change",function(d){B=!1;a.importFiles(E.files,0,0,a.maxImageSize,function(a,b,c,e,g,m,f,n,p){null!=E.files&&(C(d)(a,b,c,e,g,m,f,n,p),E.type="",E.type="file",E.value="")});t.scrollTop=t.scrollHeight});E.style.display="none";document.body.appendChild(E);a.libDlgFileInputElt=E}p=mxUtils.button(mxResources.get("import"),function(){null!=A&&(A(),A=null);a.libDlgFileInputElt.click()});p.setAttribute("id","btnAddImage");p.className="geBtn";b.appendChild(p)}p=mxUtils.button(mxResources.get("addImages"),
-function(){null!=A&&(A(),A=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){B=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var e=a.indexOf(",");0<e&&(a=a.substring(0,e)+";base64,"+a.substring(e+1))}d(a,null,0,0,b,c);t.scrollTop=t.scrollHeight}})});p.setAttribute("id","btnAddImageUrl");p.className="geBtn";b.appendChild(p);this.saveBtnClickHandler=function(d,b,c,e){a.saveLibrary(d,b,c,e)};p=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=A&&
-(A(),A=null);this.saveBtnClickHandler(u.value,n,k,f)}));p.setAttribute("id","btnSave");p.className="geBtn gePrimaryBtn";b.appendChild(p);a.editor.cancelFirst||b.appendChild(e);c.appendChild(b);this.container=c},EditShapeDialog=function(a,e,c,b,k){b=null!=b?b:300;k=null!=k?k:120;var f,l,d=document.createElement("table"),g=document.createElement("tbody");d.style.cellPadding="4px";f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";mxUtils.write(l,
-c);f.appendChild(l);g.appendChild(f);f=document.createElement("tr");l=document.createElement("td");var m=document.createElement("textarea");m.style.outline="none";m.style.resize="none";m.style.width=b-200+"px";m.style.height=k+"px";this.textarea=m;this.init=function(){m.focus();m.scrollTop=0};l.appendChild(m);f.appendChild(l);l=document.createElement("td");c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.top="6px";c.style.width="200px";c.style.height=
-k+4+"px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);l.appendChild(c);var n=new Graph(c);n.setEnabled(!1);var p=a.editor.graph.cloneCell(e);n.addCells([p]);c=n.view.getState(p);var u="";null!=c.shape&&null!=c.shape.stencil&&(u=mxUtils.getPrettyXml(c.shape.stencil.desc));mxUtils.write(m,u||"");c=n.getGraphBounds();k=Math.min(160/c.width,(k-40)/c.height);n.view.scaleAndTranslate(k,20/k-c.x,20/k-c.y);f.appendChild(l);g.appendChild(f);f=document.createElement("tr");
-l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");a.isOffline()||(k=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),k.className="geBtn",l.appendChild(k));k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";a.editor.cancelFirst&&l.appendChild(k);var t=function(d,b,c){var e=m.value,g=mxUtils.parseXml(e),
-e=mxUtils.getPrettyXml(g.documentElement),g=g.documentElement.getElementsByTagName("parsererror");if(null!=g&&0<g.length)a.showError(mxResources.get("error"),mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(c&&a.hideDialog(),g=!d.model.contains(b),!c||g||e!=u){e=Graph.compress(e);d.getModel().beginUpdate();try{if(g){var f=a.editor.graph.getFreeInsertPoint();b.geometry.x=f.x;b.geometry.y=f.y;d.addCell(b)}d.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+e+")",[b])}catch(B){throw B;
-}finally{d.getModel().endUpdate()}g&&(d.setSelectionCell(b),d.scrollCellToVisible(b))}};c=mxUtils.button(mxResources.get("preview"),function(){t(n,p,!1)});c.className="geBtn";l.appendChild(c);c=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,e,!0)});c.className="geBtn gePrimaryBtn";l.appendChild(c);a.editor.cancelFirst||l.appendChild(k);f.appendChild(l);g.appendChild(f);d.appendChild(g);this.container=d},CustomDialog=function(a,e,c,b,k,f,l,d,g){var m=document.createElement("div");
-m.appendChild(e);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=l&&e.appendChild(l);a.isOffline()||null==f||(l=mxUtils.button(mxResources.get("help"),function(){a.openLink(f)}),l.className="geBtn",e.appendChild(l));g=mxUtils.button(g||mxResources.get("cancel"),function(){a.hideDialog();null!=b&&b()});g.className="geBtn";d&&(g.style.display="none");a.editor.cancelFirst&&e.appendChild(g);k=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=
-c&&c()});e.appendChild(k);k.className="geBtn gePrimaryBtn";a.editor.cancelFirst||e.appendChild(g);m.appendChild(e);this.cancelBtn=g;this.okButton=k;this.container=m},TemplatesDialog=function(){var a='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",
-null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+
-mxResources.get("myDiagrams",null,"My diagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">&#x1F6C8; '+
+function(){var d=a.createLibraryDataFromImages(n),b=u.value;/(\.xml)$/i.test(b)||(b+=".xml");a.isLocalFileSave()?a.saveLocalFile(d,b,"text/xml",null,null,!0,null,"xml"):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml&xml="+encodeURIComponent(d))).simulate(document,"_blank")});p.setAttribute("id","btnDownload");p.className="geBtn";b.appendChild(p);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var E=document.createElement("input");E.setAttribute("multiple","multiple");
+E.setAttribute("type","file");mxEvent.addListener(E,"change",function(d){B=!1;a.importFiles(E.files,0,0,a.maxImageSize,function(a,b,c,e,g,m,f,n,p){null!=E.files&&(C(d)(a,b,c,e,g,m,f,n,p),E.type="",E.type="file",E.value="")});t.scrollTop=t.scrollHeight});E.style.display="none";document.body.appendChild(E);a.libDlgFileInputElt=E}p=mxUtils.button(mxResources.get("import"),function(){null!=A&&(A(),A=null);a.libDlgFileInputElt.click()});p.setAttribute("id","btnAddImage");p.className="geBtn";b.appendChild(p)}p=
+mxUtils.button(mxResources.get("addImages"),function(){null!=A&&(A(),A=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){B=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var e=a.indexOf(",");0<e&&(a=a.substring(0,e)+";base64,"+a.substring(e+1))}d(a,null,0,0,b,c);t.scrollTop=t.scrollHeight}})});p.setAttribute("id","btnAddImageUrl");p.className="geBtn";b.appendChild(p);this.saveBtnClickHandler=function(d,b,c,e){a.saveLibrary(d,b,c,e)};p=mxUtils.button(mxResources.get("save"),
+mxUtils.bind(this,function(){null!=A&&(A(),A=null);this.saveBtnClickHandler(u.value,n,k,f)}));p.setAttribute("id","btnSave");p.className="geBtn gePrimaryBtn";b.appendChild(p);a.editor.cancelFirst||b.appendChild(e);c.appendChild(b);this.container=c},EditShapeDialog=function(a,e,c,b,k){b=null!=b?b:300;k=null!=k?k:120;var f,l,d=document.createElement("table"),g=document.createElement("tbody");d.style.cellPadding="4px";f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan",
+"2");l.style.fontSize="10pt";mxUtils.write(l,c);f.appendChild(l);g.appendChild(f);f=document.createElement("tr");l=document.createElement("td");var m=document.createElement("textarea");m.style.outline="none";m.style.resize="none";m.style.width=b-200+"px";m.style.height=k+"px";this.textarea=m;this.init=function(){m.focus();m.scrollTop=0};l.appendChild(m);f.appendChild(l);l=document.createElement("td");c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.top=
+"6px";c.style.width="200px";c.style.height=k+4+"px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);l.appendChild(c);var n=new Graph(c);n.setEnabled(!1);var p=a.editor.graph.cloneCell(e);n.addCells([p]);c=n.view.getState(p);var u="";null!=c.shape&&null!=c.shape.stencil&&(u=mxUtils.getPrettyXml(c.shape.stencil.desc));mxUtils.write(m,u||"");c=n.getGraphBounds();k=Math.min(160/c.width,(k-40)/c.height);n.view.scaleAndTranslate(k,20/k-c.x,20/k-c.y);f.appendChild(l);
+g.appendChild(f);f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");a.isOffline()||(k=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),k.className="geBtn",l.appendChild(k));k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";a.editor.cancelFirst&&l.appendChild(k);
+var t=function(d,b,c){var e=m.value,g=mxUtils.parseXml(e),e=mxUtils.getPrettyXml(g.documentElement),g=g.documentElement.getElementsByTagName("parsererror");if(null!=g&&0<g.length)a.showError(mxResources.get("error"),mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(c&&a.hideDialog(),g=!d.model.contains(b),!c||g||e!=u){e=Graph.compress(e);d.getModel().beginUpdate();try{if(g){var f=a.editor.graph.getFreeInsertPoint();b.geometry.x=f.x;b.geometry.y=f.y;d.addCell(b)}d.setCellStyles(mxConstants.STYLE_SHAPE,
+"stencil("+e+")",[b])}catch(B){throw B;}finally{d.getModel().endUpdate()}g&&(d.setSelectionCell(b),d.scrollCellToVisible(b))}};c=mxUtils.button(mxResources.get("preview"),function(){t(n,p,!1)});c.className="geBtn";l.appendChild(c);c=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,e,!0)});c.className="geBtn gePrimaryBtn";l.appendChild(c);a.editor.cancelFirst||l.appendChild(k);f.appendChild(l);g.appendChild(f);d.appendChild(g);this.container=d},CustomDialog=function(a,e,c,b,k,f,
+l,d,g){var m=document.createElement("div");m.appendChild(e);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=l&&e.appendChild(l);a.isOffline()||null==f||(l=mxUtils.button(mxResources.get("help"),function(){a.openLink(f)}),l.className="geBtn",e.appendChild(l));g=mxUtils.button(g||mxResources.get("cancel"),function(){a.hideDialog();null!=b&&b()});g.className="geBtn";d&&(g.style.display="none");a.editor.cancelFirst&&e.appendChild(g);k=mxUtils.button(k||mxResources.get("ok"),
+function(){a.hideDialog();null!=c&&c()});e.appendChild(k);k.className="geBtn gePrimaryBtn";a.editor.cancelFirst||e.appendChild(g);m.appendChild(e);this.cancelBtn=g;this.okButton=k;this.container=m},TemplatesDialog=function(){var a='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+
+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+mxResources.get("showAll",null,"+ Show all")+
+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+mxResources.get("myDiagrams",null,"My diagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+
+mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">&#x1F6C8; '+
mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",e=document.createElement("div");e.innerHTML=a;e.className="geTemplateDlg";
var a=window.innerWidth,c=window.innerHeight,b=987,k=712;.9*a<b&&(b=Math.max(.9*a,600),e.style.width=b+"px");.9*c<k&&(k=Math.max(.9*c,300),e.style.height=k+"px");this.width=b;this.height=k;this.container=e};
TemplatesDialog.prototype.init=function(a,e,c,b,k,f,l,d,g,m){function n(){null!=F&&(F.style.fontWeight="normal",F.style.textDecoration="none",F=null)}function p(a,d,b,c,e,g,m){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";C.querySelector(".geTempDlgRadioBtn[data-id="+c+"]").className="geTempDlgRadioBtn "+(m?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");C.querySelector("."+d).src="/images/"+b+"-sel.svg";C.querySelector("."+e).src="/images/"+
@@ -9396,7 +9400,8 @@ n.defaultChecked=!0);c=document.createElement("td");c.style.whiteSpace="nowrap";
c.setAttribute("align","right");d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&c.appendChild(d);c.appendChild(l);a.editor.cancelFirst||c.appendChild(d);e.appendChild(c);k.appendChild(e);b.appendChild(k);this.container=b};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio"},{description:"diagramPngDesc",extension:"png"},{description:"diagramSvgDesc",extension:"svg"},{description:"diagramHtmlDesc",extension:"html"},{description:"diagramXmlDesc",extension:"xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",
extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",
fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},graph:{background:"#DAD2D8",gridColor:"#ABA4A9"}},{commonStyle:{fontColor:"#FEFAE0",strokeColor:"#DDA15E",fillColor:"#BC6C25"},graph:{background:"#283618",
-gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}}];Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
+gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}}];Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkgMTJ2N0g1di03SDN2N2MwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0yem0tNiAuNjdsMi41OS0yLjU4TDE3IDExLjVsLTUgNS01LTUgMS40MS0xLjQxTDExIDEyLjY3VjNoMnoiLz48L3N2Zz4=";
+Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=":
IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDAAMAPUxAEVriVp7lmCAmmGBm2OCnGmHn3OPpneSqYKbr4OcsIScsI2kto6kt46lt5KnuZmtvpquvpuvv56ywaCzwqK1xKu7yay9yq+/zLHAzbfF0bjG0bzJ1LzK1MDN18jT28nT3M3X3tHa4dTc49Xd5Njf5dng5t3k6d/l6uDm6uru8e7x8/Dz9fT29/b4+Pj5+fj5+vr6+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkKADEAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAADAAMAAAGR8CYcEgsOgYAIax4CCQuQldrCBEsiK8VS2hoFGOrlJDA+cZQwkLnqyoJFZKviSS0ICrE0ec0jDAwIiUeGyBFGhMPFBkhZo1BACH5BAkKAC4ALAAAAAAMAAwAhVB0kFR3k1V4k2CAmmWEnW6Lo3KOpXeSqH2XrIOcsISdsImhtIqhtJCmuJGnuZuwv52wwJ+ywZ+ywqm6yLHBzbLCzrXEz7fF0LnH0rrI0r7L1b/M1sXR2cfT28rV3czW3s/Z4Nfe5Nvi6ODm6uLn6+Ln7OLo7OXq7efs7+zw8u/y9PDy9PX3+Pr7+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZDQJdwSCxGDAIAoVFkFBwYSyIwGE4OkCJxIdG6WkJEx8sSKj7elfBB0a5SQg1EQ0SVVMPKhDM6iUIkRR4ZFxsgJl6JQQAh+QQJCgAxACwAAAAADAAMAIVGa4lcfZdjgpxkg51nhp5ui6N3kqh5lKqFnbGHn7KIoLOQp7iRp7mSqLmTqbqarr6br7+fssGitcOitcSuvsuuv8uwwMyzw861xNC5x9K6x9K/zNbDztjE0NnG0drJ1NzQ2eDS2+LT2+LV3ePZ4Oba4ebb4ufc4+jm6+7t8PLt8PPt8fPx8/Xx9PX09vf19/j3+Pn///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CYcEgsUhQFggFSjCQmnE1jcBhqGBXiIuAQSi7FGEIgfIzCFoCXFCZiPO0hKBMiwl7ET6eUYqlWLkUnISImKC1xbUEAIfkECQoAMgAsAAAAAAwADACFTnKPT3KPVHaTYoKcb4yjcY6leZSpf5mtgZuvh5+yiqG0i6K1jqW3kae5nrHBnrLBn7LCoLPCobTDqbrIqrvIs8LOtMPPtcPPtcTPuMbRucfSvcrUvsvVwMzWxdHaydTcytXdzNbezdff0drh2ODl2+Ln3eTp4Obq4ujs5Ont5uvu6O3w6u7w6u7x7/L09vj5+vr7+vv7////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkdAmXBILHIcicOCUqxELKKPxKAYgiYd4oMAEWo8RVmjIMScwhmBcJMKXwLCECmMGAhPI1QRwBiaSixCMDFhLSorLi8wYYxCQQAh+QQJCgAxACwAAAAADAAMAIVZepVggJphgZtnhp5vjKN2kah3kqmBmq+KobSLorWNpLaRp7mWq7ybr7+gs8KitcSktsWnuManucexwM2ywc63xtG6yNO9ytS+ytW/zNbDz9jH0tvL1d3N197S2+LU3OPU3ePV3eTX3+Xa4efb4ufd5Onl6u7r7vHs7/Lt8PLw8/Xy9Pby9fb09ff2+Pn3+Pn6+vr///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSMCYcEgseiwSR+RS7GA4JFGF8RiWNiEiJTERgkjFGAQh/KTCGoJwpApnBkITKrwoCFWnFlEhaAxXLC9CBwAGRS4wQgELYY1CQQAh+QQJCgAzACwAAAAADAAMAIVMcI5SdZFhgZtti6JwjaR4k6mAma6Cm6+KobSLorWLo7WNo7aPpredsMCescGitMOitcSmuMaqu8ixwc2zws63xdC4xtG5x9K9ytXAzdfCztjF0NnF0drK1d3M1t7P2N/P2eDT2+LX3+Xe5Onh5+vi5+vj6Ozk6e3n7O/o7O/q7vHs7/Lt8PPu8fPx8/X3+Pn6+vv7+/v8/Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRcCZcEgsmkIbTOZTLIlGqZNnchm2SCgiJ6IRqljFmQUiXIVnoITQde4chC9Y+LEQxmTFRkFSNFAqDAMIRQoCAAEEDmeLQQAh+QQJCgAwACwAAAAADAAMAIVXeZRefplff5lhgZtph59yjqV2kaeAmq6FnbGFnrGLorWNpLaQp7mRqLmYrb2essGgs8Klt8apusitvcquv8u2xNC7yNO8ydS8ytTAzdfBzdfM1t7N197Q2eDU3OPX3+XZ4ObZ4ebc4+jf5erg5erg5uvp7fDu8fPv8vTz9fb09vf19/j3+Pn4+fn5+vr6+/v///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRUCYcEgspkwjEKhUVJ1QsBNp0xm2VixiSOMRvlxFGAcTJook5eEHIhQcwpWIkAFQECkNy9AQWFwyEAkPRQ4FAwQIE2llQQAh+QQJCgAvACwAAAAADAAMAIVNcY5SdZFigptph6BvjKN0kKd8lquAmq+EnbGGn7KHn7ONpLaOpbearr+csMCdscCescGhtMOnuMauvsuzws60w862xdC9ytW/y9a/zNbCztjG0drH0tvK1N3M1t7N19/U3ePb4uff5urj6Ozk6e3l6u7m6u7o7PDq7vDt8PPv8vTw8vTw8/X19vf6+vv///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CXcEgsvlytVUplJLJIpSEDUESFTELBwSgCCQEV42kjDFiMo4uQsDB2MkLHoEHUTD7DRAHC8VAiZ0QSCgYIDxhNiUEAOw==":
IMAGE_PATH+"/spin.gif";Editor.globeImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiIvPjwvc3ZnPg==";
@@ -9492,7 +9497,7 @@ function(a){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(th
Editor.prototype.addFontCss=function(a,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var b=a.getElementsByTagName("defs"),c=a.ownerDocument;0==b.length?(b=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"defs"):c.createElement("defs"),null!=a.firstChild?a.insertBefore(b,a.firstChild):a.appendChild(b)):b=b[0];c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,d);b.appendChild(c)}};
Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,d,b,c,e,g,m,f,n,p,k,l,u,z,t,q){try{g=null!=g?g:!0;m=null!=m?m:!0;l=null!=l?l:this.graph;u=null!=u?u:0;var v=n?null:l.background;v==mxConstants.NONE&&(v=null);null==v&&(v=c);null==v&&0==n&&(v=q?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(l.getSvg(null,null,null,z,null,m,null,null,null,p,null,q),mxUtils.bind(this,function(b){try{var c=
new Image;c.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF?window.setTimeout(function(){z.drawImage(c,u/f,u/f);a(n)},0):(z.drawImage(c,u/f,u/f),a(n))},n=document.createElement("canvas"),p=parseInt(b.getAttribute("width")),k=parseInt(b.getAttribute("height"));f=null!=f?f:1;null!=d&&(f=g?Math.min(1,Math.min(3*d/(4*k),d/p)):d/p);p=Math.ceil(f*p)+2*u;k=Math.ceil(f*k)+2*u;n.setAttribute("width",p);n.setAttribute("height",k);var z=n.getContext("2d");null!=v&&(z.beginPath(),z.rect(0,
-0,p,k),z.fillStyle=v,z.fill());z.scale(f,f);if(t){var q=l.view,B=q.scale;q.scale=1;var x=btoa(unescape(encodeURIComponent(q.createSvgGrid(q.gridColor))));q.scale=B;var x="data:image/svg+xml;base64,"+x,G=l.gridSize*q.gridSteps*f,C=l.getGraphBounds(),y=q.translate.x*B,H=q.translate.y*B,E=y+(C.x-y)/B,K=H+(C.y-H)/B,A=new Image;A.onload=function(){try{for(var a=-Math.round(G-mxUtils.mod((y-E)*f,G)),d=-Math.round(G-mxUtils.mod((H-K)*f,G));a<p;a+=G)for(var b=d;b<k;b+=G)z.drawImage(A,a/f,b/f);m()}catch(na){null!=
+0,p,k),z.fillStyle=v,z.fill());z.scale(f,f);if(t){var q=l.view,B=q.scale;q.scale=1;var x=btoa(unescape(encodeURIComponent(q.createSvgGrid(q.gridColor))));q.scale=B;var x="data:image/svg+xml;base64,"+x,C=l.gridSize*q.gridSteps*f,G=l.getGraphBounds(),y=q.translate.x*B,H=q.translate.y*B,E=y+(G.x-y)/B,K=H+(G.y-H)/B,A=new Image;A.onload=function(){try{for(var a=-Math.round(C-mxUtils.mod((y-E)*f,C)),d=-Math.round(C-mxUtils.mod((H-K)*f,C));a<p;a+=C)for(var b=d;b<k;b+=C)z.drawImage(A,a/f,b/f);m()}catch(na){null!=
e&&e(na)}};A.onerror=function(a){null!=e&&e(a)};A.src=x}else m()}catch(ka){null!=e&&e(ka)}});c.onerror=function(a){null!=e&&e(a)};p&&this.graph.addSvgShadow(b);this.graph.mathEnabled&&this.addMathCss(b);var m=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(b,this.resolvedFontCss),c.src=Editor.createSvgDataUri(mxUtils.getXml(b))}catch(R){null!=e&&e(R)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.addFontCss(b,a),this.loadFonts(m)}catch(X){null!=
e&&e(X)}}))}catch(R){null!=e&&e(R)}}),b,k)}catch(Q){null!=e&&e(Q)}};Editor.crcTable=[];for(var k=0;256>k;k++)for(var f=k,l=0;8>l;l++)f=1==(f&1)?3988292384^f>>>1:f>>>1,Editor.crcTable[k]=f;Editor.updateCRC=function(a,d,b,c){for(var e=0;e<c;e++)a=Editor.crcTable[(a^d.charCodeAt(b+e))&255]^a>>>8;return a};Editor.crc32=function(a){for(var d=-1,b=0;b<a.length;b++)d=d>>>8^Editor.crcTable[(d^a.charCodeAt(b))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(a,d,b,c,e){function g(a,d){var b=n;n+=
d;return a.substring(b,n)}function m(a){a=g(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function f(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(g(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(g(a,4),"IHDR"!=g(a,4))null!=e&&e();else{g(a,17);e=a.substring(0,n);do{var p=m(a);if("IDAT"==g(a,4)){e=a.substring(0,
@@ -9616,7 +9621,7 @@ p.appendChild(m);m=document.createElement("span");mxUtils.write(m,mxResources.ge
g.appendChild(m);this.container=g};var D=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=
this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(D.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var F=document.createElement("canvas"),
I=new Image;I.onload=function(){try{F.getContext("2d").drawImage(I,0,0);var a=F.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(K){}};I.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(G){}})();
-(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,c,b){b.ui=a.ui;return c};a.afterDecode=function(a,c,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="13.4.2";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars=
+(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,c,b){b.ui=a.ui;return c};a.afterDecode=function(a,c,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="13.4.3";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars=
"\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&
!EditorUi.isElectronApp&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,
topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(a,b,c,e,f,k,l){k=null!=k?k:0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&
@@ -9688,9 +9693,9 @@ function(a,b,c,e,f,k,l){};EditorUi.prototype.isScratchpadEnabled=function(){retu
b=d.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));d.appendChild(b);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var d=this.sidebar.palettes[a];if(null!=d){for(var b=0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);delete this.sidebar.palettes[a]}};
EditorUi.prototype.repositionLibrary=function(a){var d=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:d.firstChild.nextSibling.nextSibling;var b=d.lastChild,c=b.previousSibling;d.insertBefore(b,a);d.insertBefore(c,b)};EditorUi.prototype.loadLibrary=function(a,b){var d=mxUtils.parseXml(a.getData());if("mxlibrary"==d.documentElement.nodeName){var c=JSON.parse(mxUtils.getTextContent(d.documentElement));
this.libraryLoaded(a,c,d.documentElement.getAttribute("title"),b)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c,e){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var g=
-null,f=mxUtils.bind(this,function(b,d){0==b.length&&a.isEditable()?(null==g&&(g=document.createElement("div"),g.className="geDropTarget",mxUtils.write(g,mxResources.get("dragElementsHere"))),d.appendChild(g)):this.addLibraryEntries(b,d)});null!=this.sidebar&&null!=b&&this.sidebar.addEntries(b);c=null!=c&&0<c.length?c:a.getTitle();var m=this.sidebar.addPalette(a.getHash(),c,null!=e?e:!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(d);var k=m.parentNode.previousSibling;e=k.getAttribute("title");
+null,f=mxUtils.bind(this,function(d,b){0==d.length&&a.isEditable()?(null==g&&(g=document.createElement("div"),g.className="geDropTarget",mxUtils.write(g,mxResources.get("dragElementsHere"))),b.appendChild(g)):this.addLibraryEntries(d,b)});null!=this.sidebar&&null!=b&&this.sidebar.addEntries(b);c=null!=c&&0<c.length?c:a.getTitle();var m=this.sidebar.addPalette(a.getHash(),c,null!=e?e:!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(d);var k=m.parentNode.previousSibling;e=k.getAttribute("title");
null!=e&&0<e.length&&".scratchpad"!=a.title&&k.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+e);var n=document.createElement("div");n.style.position="absolute";n.style.right="0px";n.style.top="0px";n.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(n.style.backgroundColor="inherit");k.style.position="relative";var l=document.createElement("img");l.setAttribute("src",Dialog.prototype.closeImage);l.setAttribute("title",mxResources.get("close"));l.setAttribute("valign","absmiddle");
-l.setAttribute("border","0");l.style.cursor="pointer";l.style.margin="0 3px";var A=null;if(".scratchpad"!=a.title||this.closableScratchpad)n.appendChild(l),mxEvent.addListener(l,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var d=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=A?this.confirm(mxResources.get("allChangesLost"),null,d,mxResources.get("cancel"),mxResources.get("discardChanges")):d();mxEvent.consume(b)}}));if(a.isEditable()){var z=this.editor.graph,B=null,
+l.setAttribute("border","0");l.style.cursor="pointer";l.style.margin="0 3px";var A=null;if(".scratchpad"!=a.title||this.closableScratchpad)n.appendChild(l),mxEvent.addListener(l,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=A?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var z=this.editor.graph,B=null,
C=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),m,b,a,a.getMode());mxEvent.consume(d)}),E=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=B&&null!=B.parentNode&&B.parentNode.removeChild(B),B=l.cloneNode(!1),B.setAttribute("src",Editor.spinImage),B.setAttribute("title",mxResources.get("saving")),B.style.cursor="default",B.style.marginRight="2px",B.style.marginTop="-2px",n.insertBefore(B,n.firstChild),k.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(a.getTitle(),
b,a,a.getMode(),!0,!0,function(){null!=B&&null!=B.parentNode&&(B.parentNode.removeChild(B),k.style.paddingRight=18*n.childNodes.length+"px")})):null==A&&(A=l.cloneNode(!1),A.setAttribute("src",IMAGE_PATH+"/download.png"),A.setAttribute("title",mxResources.get("save")),n.insertBefore(A,n.firstChild),mxEvent.addListener(A,"click",mxUtils.bind(this,function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==A||a.isModified()||(k.style.paddingRight=18*n.childNodes.length+
"px",A.parentNode.removeChild(A),A=null)});mxEvent.consume(d)})),k.style.paddingRight=18*n.childNodes.length+"px")}),D=mxUtils.bind(this,function(a,d,c,e){a=z.cloneCells(mxUtils.sortCells(z.model.getTopmostCells(a)));for(var f=0;f<a.length;f++){var n=z.getCellGeometry(a[f]);null!=n&&n.translate(-d.x,-d.y)}m.appendChild(this.sidebar.createVertexTemplateFromCells(a,d.width,d.height,e||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&
@@ -9708,7 +9713,7 @@ mxEvent.consume(a)})),n.insertBefore(e,n.firstChild))}k.appendChild(n);k.style.p
"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Format.prototype.inactiveTabBackgroundColor=
"black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00",mxClient.IS_SVG&&(Editor.helpImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=",
Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAACZmZkICAgEBASNjY2Dg4MYGBiTk5N5eXl1dXVmZmZQUFBCQkI3NzceHh4MDAykpKSJiYl+fn5sbGxaWlo/Pz8SEhK96uPlAAAAAXRSTlMAQObYZgAAAE5JREFUGNPFzTcSgDAQQ1HJGUfy/Y9K7V1qeOUfzQifCQZai1XHaz11LFysbDbzgDSSWMZiETz3+b8yNUc/MMsktxuC8XQBSncdLwz+8gCCggGXzBcozAAAAABJRU5ErkJggg=="))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(a,b,c,e,f){a=new ImageDialog(this,a,b,c,e,f);this.showDialog(a.container,Graph.fileSupport?
-480:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(a,b){if(!b){var d=new ChangePageSetup(this,null,a);d.ignoreColor=!0;this.editor.graph.model.execute(d)}});var d=new BackgroundImageDialog(this,a,b);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,f){a=new LibraryDialog(this,a,b,c,e,f);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,
+480:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(a,d){if(!d){var b=new ChangePageSetup(this,null,a);b.ignoreColor=!0;this.editor.graph.model.execute(b)}});var d=new BackgroundImageDialog(this,a,b);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,f){a=new LibraryDialog(this,a,b,c,e,f);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,
function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var b=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&b.refresh()}));return b};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer geSidebarFooter");a.style.position="absolute";a.style.overflow=
"hidden";var b=document.createElement("a");b.className="geTitle";b.style.color="#DF6C0C";b.style.fontWeight="bold";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));
a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,c,e,f,k,l){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=a&&null!=a.error?a.error:a;if(null!=a&&null!=a.stack&&null!=a.message)try{l?null!=window.console&&console.error("EditorUi.handleError:",a):EditorUi.logError("Caught: "+(null!=a.message?a.message:"null"),null,null,null,a,"INFO")}catch(B){}if(null!=g||null!=b){l=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),
@@ -9717,8 +9722,8 @@ if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid
p);this.handleError(a,b,c,e,f)}),n,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){e.innerHTML="";for(var a=0;a<b.length;a++){var d=document.createElement("option");mxUtils.write(d,b[a].displayName);d.value=a;e.appendChild(d);d=document.createElement("option");d.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(d,"<"+b[a].email+">");d.setAttribute("disabled","disabled");e.appendChild(d)}d=document.createElement("option");mxUtils.write(d,mxResources.get("addAccount"));d.value=b.length;
e.appendChild(d)}var b=this.drive.getUsersList(),d=document.createElement("div"),c=document.createElement("span");c.style.marginTop="6px";mxUtils.write(c,mxResources.get("changeUser")+": ");d.appendChild(c);var e=document.createElement("select");e.style.width="200px";a();mxEvent.addListener(e,"change",mxUtils.bind(this,function(){var d=e.value,c=b.length!=d;c&&this.drive.setUser(b[d]);this.drive.authorize(c,mxUtils.bind(this,function(){c||(b=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),
!0)}));d.appendChild(e);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(d.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=c&&c()}),480,150);return}}null!=g.message?l=mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?l=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?l=mxUtils.htmlEntities(mxResources.get("timeout")):
-g.code==App.ERROR_BUSY&&(l=mxUtils.htmlEntities(mxResources.get("busy"))))}var z=k=null;null!=g&&null!=g.helpLink&&(k=mxResources.get("help"),z=mxUtils.bind(this,function(){return this.editor.graph.openLink(g.helpLink)}));this.showError(b,l,m,c,n,null,null,k,z,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,f,
-k){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,f,null,null,null,null,g);this.showDialog(a.container,340,46+g,!0,k);a.init()};EditorUi.prototype.showBanner=function(a,b,c){var d=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var e=document.createElement("div");
+g.code==App.ERROR_BUSY&&(l=mxUtils.htmlEntities(mxResources.get("busy"))))}var z=k=null;null!=g&&null!=g.helpLink&&(k=mxResources.get("help"),z=mxUtils.bind(this,function(){return this.editor.graph.openLink(g.helpLink)}));this.showError(b,l,m,c,n,null,null,k,z,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.alert=function(a,b,c){a=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(a.container,c||340,100,!0,!1);a.init()};EditorUi.prototype.confirm=function(a,b,c,e,
+f,k){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,f,null,null,null,null,g);this.showDialog(a.container,340,46+g,!0,k);a.init()};EditorUi.prototype.showBanner=function(a,b,c){var d=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var e=document.createElement("div");
e.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(e.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(e.style,"transition","all 1s ease");e.className="geBtn gePrimaryBtn";d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+
"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";e.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get("close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";e.appendChild(d);mxUtils.write(e,b);document.body.appendChild(e);
this.bannerShowing=!0;var g=document.createElement("div");g.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var f=document.createElement("input");f.setAttribute("type","checkbox");f.setAttribute("id","geDoNotShowAgainCheckbox");f.style.marginRight="6px";g.appendChild(f);b=document.createElement("label");b.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(b,mxResources.get("doNotShowAgain"));g.appendChild(b);e.style.paddingBottom="30px";e.appendChild(g);var m=mxUtils.bind(this,
@@ -9726,13 +9731,13 @@ function(){null!=e.parentNode&&(e.parentNode.removeChild(e),this.bannerShowing=!
mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);d!=f&&d!=b?(c(),m(),mxEvent.consume(a)):k()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(k,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};
EditorUi.prototype.createImageDataUri=function(a,b,c,e){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=Editor.writeGraphModelToPng(d,"tEXt","mxfile",encodeURIComponent(b)));0<e&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",e));return d};EditorUi.prototype.saveCanvas=function(a,b,c,e,f){var d="jpeg"==c?"jpg":c;e=this.getBaseFilename(e)+"."+d;a=this.createImageDataUri(a,b,c,f);this.saveData(e,d,a.substring(a.lastIndexOf(",")+
1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,
-620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,f){"text/xml"!=c||/(\.drawio)$/i.test(b)||/(\.xml)$/i.test(b)||(b+=".drawio");if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),c.document.close(),c.document.execCommand("SaveAs",
-!0,b),c.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==c||"image/"!=c.substring(0,6)?this.showTextDialog(b+":",a):this.openInNewWindow(a,c,e);else{var d=document.createElement("a"),g=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent)var m=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),g=65==(m?parseInt(m[2],10):!1)?!1:g;if(g||this.isOffline()){d.href=URL.createObjectURL(e?
-this.base64ToBlob(a,c):new Blob([a],{type:c}));g?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(v){}}else this.createEchoRequest(a,b,c,e,f).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,f,k){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=f?"&format="+f:"")+(null!=k?"&base64="+
-k:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,e=Math.ceil(c/1024),g=Array(e),f=0;f<e;++f){for(var k=1024*f,l=Math.min(k+1024,c),x=Array(l-k),y=0;k<l;++y,++k)x[y]=d[k].charCodeAt(0);g[f]=new Uint8Array(x)}return new Blob(g,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,f,k,l){k=null!=k?k:!1;l=null!=l?l:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(k);
-isLocalStorage&&f++;var d=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){try{if("_blank"==d)if(null!=c&&"image/"==c.substring(0,6))this.openInNewWindow(a,c,e);else{var g=window.open("about:blank");null==g?mxUtils.popup(a,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),g.document.close())}else d==App.MODE_DEVICE||"download"==d?this.doSaveLocalFile(a,b,c,e):null!=b&&0<b.length&&this.pickFolder(d,mxUtils.bind(this,function(g){try{this.exportFile(a,b,c,e,d,
-g)}catch(z){this.handleError(z)}}))}catch(A){this.handleError(A)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,l,null,1<f,d,a,c,e);k=this.isServices(f)?f>d?390:270:160;this.showDialog(b.container,400,k,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"!=b||mxClient.IS_SVG?"image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):
-(a=c?a:btoa(unescape(encodeURIComponent(a))),d.document.write('<html><img style="max-width:100%;" src="data:'+b+";base64,"+a+'"/></html>')):d.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),d.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,
+620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,f,k){"text/xml"!=c||/(\.drawio)$/i.test(b)||/(\.xml)$/i.test(b)||(b=b+"."+(null!=k?k:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),c.document.close(),c.document.execCommand("SaveAs",
+!0,b),c.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==c||"image/"!=c.substring(0,6)?this.showTextDialog(b+":",a):this.openInNewWindow(a,c,e);else{var d=document.createElement("a");k=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);k=65==(g?parseInt(g[2],10):!1)?!1:k}if(k||this.isOffline()){d.href=URL.createObjectURL(e?
+this.base64ToBlob(a,c):new Blob([a],{type:c}));k?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(v){}}else this.createEchoRequest(a,b,c,e,f).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,f,k){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=f?"&format="+f:"")+(null!=k?"&base64="+
+k:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,e=Math.ceil(c/1024),g=Array(e),f=0;f<e;++f){for(var k=1024*f,l=Math.min(k+1024,c),x=Array(l-k),y=0;k<l;++y,++k)x[y]=d[k].charCodeAt(0);g[f]=new Uint8Array(x)}return new Blob(g,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,f,k,l,q){k=null!=k?k:!1;l=null!=l?l:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(k);
+isLocalStorage&&f++;var d=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){try{if("_blank"==d)if(null!=c&&"image/"==c.substring(0,6))this.openInNewWindow(a,c,e);else{var g=window.open("about:blank");null==g?mxUtils.popup(a,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),g.document.close())}else d==App.MODE_DEVICE||"download"==d?this.doSaveLocalFile(a,b,c,e,null,q):null!=b&&0<b.length&&this.pickFolder(d,mxUtils.bind(this,function(g){try{this.exportFile(a,
+b,c,e,d,g)}catch(B){this.handleError(B)}}))}catch(z){this.handleError(z)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,l,null,1<f,d,a,c,e);k=this.isServices(f)?f>d?390:270:160;this.showDialog(b.container,400,k,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"!=b||mxClient.IS_SVG?"image/svg+xml"==b?d.document.write("<html>"+
+a+"</html>"):(a=c?a:btoa(unescape(encodeURIComponent(a))),d.document.write('<html><img style="max-width:100%;" src="data:'+b+";base64,"+a+'"/></html>')):d.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),d.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,
"click",d);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);else{this.exportDialog=document.createElement("div");var c=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";
this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.zIndex;var e=new Spinner({lines:8,length:6,width:5,
radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});e.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(a){e.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",
@@ -9925,27 +9930,27 @@ a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.st
b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),
a.appendChild(b),c=b));"1"!=urlParams.noExitBtn&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("exit")),b.setAttribute("title",mxResources.get("exit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),a.appendChild(b),c=b);c.style.marginRight="20px";this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};
EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=
-function(a,b){for(var d=this.editor.graph,c=d.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](d);if(null!=a[e].config)for(var g in a[e].config)f[g]=a[e].config[g];this.executeLayout(function(){f.execute(d.getDefaultParent(),0==c.length?null:c)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[],e=[],f={};if(0<d.length){var g={},k=null,l=null,x=null,y=null,A=null,z=null,B=null,C=null,E="",D="auto",F="auto",I=null,G=null,K=40,H=40,L=100,
-M=0,J=this.editor.graph;J.getGraphBounds();for(var S=function(){null!=b?b(ja):(J.setSelectionCells(ja),J.scrollCellToVisible(J.getSelectionCell()))},W=J.getFreeInsertPoint(),aa=W.x,ca=W.y,W=ca,Y=null,V="auto",C=null,U=[],Z=null,ba=null,T=0;T<d.length&&"#"==d[T].charAt(0);){a=d[T];for(T++;T<d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[T].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[T].substring(1)),T++;if("#"!=a.charAt(1)){var P=a.indexOf(":");if(0<P){var Q=mxUtils.trim(a.substring(1,P)),
+function(a,b){for(var d=this.editor.graph,c=d.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](d);if(null!=a[e].config)for(var g in a[e].config)f[g]=a[e].config[g];this.executeLayout(function(){f.execute(d.getDefaultParent(),0==c.length?null:c)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var g={},k=null,l=null,x=null,y=null,A=null,z=null,B=null,C=null,E="",D="auto",F="auto",I=null,G=null,K=40,H=40,L=100,
+M=0,J=this.editor.graph;J.getGraphBounds();for(var S=function(){null!=b?b(ja):(J.setSelectionCells(ja),J.scrollCellToVisible(J.getSelectionCell()))},W=J.getFreeInsertPoint(),aa=W.x,ca=W.y,W=ca,Y=null,V="auto",C=null,U=[],Z=null,ba=null,T=0;T<c.length&&"#"==c[T].charAt(0);){a=c[T];for(T++;T<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[T].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[T].substring(1)),T++;if("#"!=a.charAt(1)){var P=a.indexOf(":");if(0<P){var Q=mxUtils.trim(a.substring(1,P)),
N=mxUtils.trim(a.substring(P+1));"label"==Q?Y=J.sanitizeHtml(N):"labelname"==Q&&0<N.length&&"-"!=N?y=N:"labels"==Q&&0<N.length&&"-"!=N?A=JSON.parse(N):"style"==Q?k=N:"parentstyle"==Q?z=N:"stylename"==Q&&0<N.length&&"-"!=N?x=N:"styles"==Q&&0<N.length&&"-"!=N?l=JSON.parse(N):"identity"==Q&&0<N.length&&"-"!=N?B=N:"parent"==Q&&0<N.length&&"-"!=N?C=N:"namespace"==Q&&0<N.length&&"-"!=N?E=N:"width"==Q?D=N:"height"==Q?F=N:"left"==Q&&0<N.length?I=N:"top"==Q&&0<N.length?G=N:"ignore"==Q?ba=N.split(","):"connect"==
-Q?U.push(JSON.parse(N)):"link"==Q?Z=N:"padding"==Q?M=parseFloat(N):"edgespacing"==Q?K=parseFloat(N):"nodespacing"==Q?H=parseFloat(N):"levelspacing"==Q?L=parseFloat(N):"layout"==Q&&(V=N)}}}if(null==d[T])throw Error(mxResources.get("invalidOrMissingFile"));for(var ga=this.editor.csvToArray(d[T]),Q=P=null,N=[],R=0;R<ga.length;R++)B==ga[R]&&(P=R),C==ga[R]&&(Q=R),N.push(mxUtils.trim(ga[R]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Y&&(Y="%"+N[0]+"%");if(null!=U)for(var X=
-0;X<U.length;X++)null==g[U[X].to]&&(g[U[X].to]={});B=[];for(R=T+1;R<d.length;R++){var da=this.editor.csvToArray(d[R]);if(null==da){var sa=40<d[R].length?d[R].substring(0,40)+"...":d[R];throw Error(sa+" ("+R+"):\n"+mxResources.get("containsValidationErrors"));}0<da.length&&B.push(da)}J.model.beginUpdate();try{for(R=0;R<B.length;R++){var da=B[R],O=null,ha=null!=P?E+da[P]:null;null!=ha&&(O=J.model.getCell(ha));var d=null!=O,fa=new mxCell(Y,new mxGeometry(aa,W,0,0),k||"whiteSpace=wrap;html=1;");fa.vertex=
-!0;fa.id=ha;for(var ea=0;ea<da.length;ea++)J.setAttributeForCell(fa,N[ea],da[ea]);if(null!=y&&null!=A){var la=A[fa.getAttribute(y)];null!=la&&J.labelChanged(fa,la)}if(null!=x&&null!=l){var qa=l[fa.getAttribute(x)];null!=qa&&(fa.style=qa)}J.setAttributeForCell(fa,"placeholders","1");fa.style=J.replacePlaceholders(fa,fa.style);d&&(J.model.setGeometry(O,fa.geometry),J.model.setStyle(O,fa.style),0>mxUtils.indexOf(e,O)&&e.push(O));O=fa;if(!d)for(X=0;X<U.length;X++)g[U[X].to][O.getAttribute(U[X].to)]=O;
+Q?U.push(JSON.parse(N)):"link"==Q?Z=N:"padding"==Q?M=parseFloat(N):"edgespacing"==Q?K=parseFloat(N):"nodespacing"==Q?H=parseFloat(N):"levelspacing"==Q?L=parseFloat(N):"layout"==Q&&(V=N)}}}if(null==c[T])throw Error(mxResources.get("invalidOrMissingFile"));for(var ga=this.editor.csvToArray(c[T]),Q=P=null,N=[],R=0;R<ga.length;R++)B==ga[R]&&(P=R),C==ga[R]&&(Q=R),N.push(mxUtils.trim(ga[R]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Y&&(Y="%"+N[0]+"%");if(null!=U)for(var X=
+0;X<U.length;X++)null==g[U[X].to]&&(g[U[X].to]={});B=[];for(R=T+1;R<c.length;R++){var da=this.editor.csvToArray(c[R]);if(null==da){var sa=40<c[R].length?c[R].substring(0,40)+"...":c[R];throw Error(sa+" ("+R+"):\n"+mxResources.get("containsValidationErrors"));}0<da.length&&B.push(da)}J.model.beginUpdate();try{for(R=0;R<B.length;R++){var da=B[R],O=null,ha=null!=P?E+da[P]:null;null!=ha&&(O=J.model.getCell(ha));var c=null!=O,fa=new mxCell(Y,new mxGeometry(aa,W,0,0),k||"whiteSpace=wrap;html=1;");fa.vertex=
+!0;fa.id=ha;for(var ea=0;ea<da.length;ea++)J.setAttributeForCell(fa,N[ea],da[ea]);if(null!=y&&null!=A){var la=A[fa.getAttribute(y)];null!=la&&J.labelChanged(fa,la)}if(null!=x&&null!=l){var qa=l[fa.getAttribute(x)];null!=qa&&(fa.style=qa)}J.setAttributeForCell(fa,"placeholders","1");fa.style=J.replacePlaceholders(fa,fa.style);c&&(J.model.setGeometry(O,fa.geometry),J.model.setStyle(O,fa.style),0>mxUtils.indexOf(e,O)&&e.push(O));O=fa;if(!c)for(X=0;X<U.length;X++)g[U[X].to][O.getAttribute(U[X].to)]=O;
null!=Z&&"link"!=Z&&(J.setLinkForCell(O,O.getAttribute(Z)),J.setAttributeForCell(O,Z,null));J.fireEvent(new mxEventObject("cellsInserted","cells",[O]));var ia=this.editor.graph.getPreferredSizeForCell(O);O.vertex&&(null!=I&&null!=O.getAttribute(I)&&(O.geometry.x=aa+parseFloat(O.getAttribute(I))),null!=G&&null!=O.getAttribute(G)&&(O.geometry.y=ca+parseFloat(O.getAttribute(G))),"@"==D.charAt(0)&&null!=O.getAttribute(D.substring(1))?O.geometry.width=parseFloat(O.getAttribute(D.substring(1))):O.geometry.width=
-"auto"==D?ia.width+M:parseFloat(D),"@"==F.charAt(0)&&null!=O.getAttribute(F.substring(1))?O.geometry.height=parseFloat(O.getAttribute(F.substring(1))):O.geometry.height="auto"==F?ia.height+M:parseFloat(F),W+=O.geometry.height+H);d?(null==f[ha]&&(f[ha]=[]),f[ha].push(O)):(C=null!=Q?J.model.getCell(E+da[Q]):null,c.push(O),null!=C?(C.style=J.replacePlaceholders(C,z),J.addCell(O,C)):e.push(J.addCell(O)))}for(var ma=e.slice(),ja=e.slice(),X=0;X<U.length;X++)for(var ua=U[X],R=0;R<c.length;R++){var O=c[R],
-va=mxUtils.bind(this,function(a,b,d){var c=b.getAttribute(d.from);if(null!=c&&(J.setAttributeForCell(b,d.from,null),""!=c))for(var c=c.split(","),e=0;e<c.length;e++){var f=g[d.to][c[e]];if(null!=f){var k=d.label;null!=d.fromlabel&&(k=(b.getAttribute(d.fromlabel)||"")+(k||""));null!=d.tolabel&&(k=(k||"")+(f.getAttribute(d.tolabel)||""));var l="target"==d.placeholders==!d.invert?f:a,l=null!=d.style?J.replacePlaceholders(l,d.style):J.createCurrentEdgeStyle(),k=J.insertEdge(null,null,k||"",d.invert?f:
-a,d.invert?a:f,l);if(null!=d.labels)for(l=0;l<d.labels.length;l++){var m=d.labels[l],n=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;if(null!=m.dx||null!=m.dy)n.geometry.offset=new mxPoint(null!=m.dx?m.dx:0,null!=m.dy?m.dy:0);k.insert(n)}ja.push(k);mxUtils.remove(d.invert?a:f,ma)}}});va(O,O,ua);if(null!=f[O.id])for(ea=0;ea<f[O.id].length;ea++)va(O,f[O.id][ea],ua)}if(null!=ba)for(R=0;R<c.length;R++)for(O=
-c[R],ea=0;ea<ba.length;ea++)J.setAttributeForCell(O,mxUtils.trim(ba[ea]),null);if(0<e.length){var ka=new mxParallelEdgeLayout(J);ka.spacing=K;var ta=function(){0<ka.spacing&&ka.execute(J.getDefaultParent());for(var a=0;a<e.length;a++){var b=J.getCellGeometry(e[a]);b.x=Math.round(J.snap(b.x));b.y=Math.round(J.snap(b.y));"auto"==D&&(b.width=Math.round(J.snap(b.width)));"auto"==F&&(b.height=Math.round(J.snap(b.height)))}};if("["==V.charAt(0)){var wa=S;J.view.validate();this.executeLayoutList(JSON.parse(V),
+"auto"==D?ia.width+M:parseFloat(D),"@"==F.charAt(0)&&null!=O.getAttribute(F.substring(1))?O.geometry.height=parseFloat(O.getAttribute(F.substring(1))):O.geometry.height="auto"==F?ia.height+M:parseFloat(F),W+=O.geometry.height+H);c?(null==f[ha]&&(f[ha]=[]),f[ha].push(O)):(C=null!=Q?J.model.getCell(E+da[Q]):null,d.push(O),null!=C?(C.style=J.replacePlaceholders(C,z),J.addCell(O,C)):e.push(J.addCell(O)))}for(var ma=e.slice(),ja=e.slice(),X=0;X<U.length;X++)for(var ua=U[X],R=0;R<d.length;R++){var O=d[R],
+va=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d&&(J.setAttributeForCell(b,c.from,null),""!=d))for(var d=d.split(","),e=0;e<d.length;e++){var f=g[c.to][d[e]];if(null!=f){var k=c.label;null!=c.fromlabel&&(k=(b.getAttribute(c.fromlabel)||"")+(k||""));null!=c.tolabel&&(k=(k||"")+(f.getAttribute(c.tolabel)||""));var l="target"==c.placeholders==!c.invert?f:a,l=null!=c.style?J.replacePlaceholders(l,c.style):J.createCurrentEdgeStyle(),k=J.insertEdge(null,null,k||"",c.invert?f:
+a,c.invert?a:f,l);if(null!=c.labels)for(l=0;l<c.labels.length;l++){var m=c.labels[l],n=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;if(null!=m.dx||null!=m.dy)n.geometry.offset=new mxPoint(null!=m.dx?m.dx:0,null!=m.dy?m.dy:0);k.insert(n)}ja.push(k);mxUtils.remove(c.invert?a:f,ma)}}});va(O,O,ua);if(null!=f[O.id])for(ea=0;ea<f[O.id].length;ea++)va(O,f[O.id][ea],ua)}if(null!=ba)for(R=0;R<d.length;R++)for(O=
+d[R],ea=0;ea<ba.length;ea++)J.setAttributeForCell(O,mxUtils.trim(ba[ea]),null);if(0<e.length){var ka=new mxParallelEdgeLayout(J);ka.spacing=K;var ta=function(){0<ka.spacing&&ka.execute(J.getDefaultParent());for(var a=0;a<e.length;a++){var b=J.getCellGeometry(e[a]);b.x=Math.round(J.snap(b.x));b.y=Math.round(J.snap(b.y));"auto"==D&&(b.width=Math.round(J.snap(b.width)));"auto"==F&&(b.height=Math.round(J.snap(b.height)))}};if("["==V.charAt(0)){var wa=S;J.view.validate();this.executeLayoutList(JSON.parse(V),
function(){ta();wa()});S=null}else if("circle"==V){var na=new mxCircleLayout(J);na.resetEdges=!1;var xa=na.isVertexIgnored;na.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(e,a)};this.executeLayout(function(){na.execute(J.getDefaultParent());ta()},!0,S);S=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&ja.length==2*e.length-1&&1==ma.length){J.view.validate();var ra=new mxCompactTreeLayout(J,"horizontaltree"==V);ra.levelDistance=H;ra.edgeRouting=!1;ra.resetEdges=
!1;this.executeLayout(function(){ra.execute(J.getDefaultParent(),0<ma.length?ma[0]:null)},!0,S);S=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&1==ma.length){J.view.validate();var oa=new mxHierarchicalLayout(J,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);oa.intraCellSpacing=H;oa.parallelEdgeSpacing=K;oa.interRankCellSpacing=L;oa.disableEdgeStyle=!1;this.executeLayout(function(){oa.execute(J.getDefaultParent(),ja);J.moveCells(ja,aa,ca)},!0,S);S=null}else if("organic"==
V||"auto"==V&&ja.length>e.length){J.view.validate();var pa=new mxFastOrganicLayout(J);pa.forceConstant=3*H;pa.resetEdges=!1;var ya=pa.isVertexIgnored;pa.isVertexIgnored=function(a){return ya.apply(this,arguments)||0>mxUtils.indexOf(e,a)};ka=new mxParallelEdgeLayout(J);ka.spacing=K;this.executeLayout(function(){pa.execute(J.getDefaultParent());ta()},!0,S);S=null}}this.hideDialog()}finally{J.model.endUpdate()}null!=S&&S()}}catch(za){this.handleError(za)}};EditorUi.prototype.getSearch=function(a){var b=
-"";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var d="?",c;for(c in urlParams)0>mxUtils.indexOf(a,c)&&null!=urlParams[c]&&(b+=d+c+"="+urlParams[c],d="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
-c;for(c in urlParams)0>mxUtils.indexOf(d,c)&&(a=0==b?a+"?":a+"&",null!=urlParams[c]&&(a+=c+"="+urlParams[c],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,560,130,!0,!0);a.init()};var k=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=k.apply(this,arguments),d=this.editor.graph,c=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(d.container)&&d.pageVisible&&
-null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return c.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(d.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*
-b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(d.container)&&null!=this.source.minimumGraphSize){var c=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*c.x))/2)-c.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*c.y))/2)-c.y-5/a))}return new mxPoint(8/
-a,8/a)};var f=b.init;b.init=function(){f.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=d.getPageLayout(),b=d.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,d){var c=d.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=
-e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor;null!=e.view.backgroundPageShape&&null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(c.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var d=1;null==this.drive&&"function"!==typeof window.DriveClient||
-d++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;b||null==this.gitHub||d++;b||null==this.gitLab||d++;b&&a&&isLocalStorage&&"1"==urlParams.browser&&d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);
+"";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
+d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,560,130,!0,!0);a.init()};var k=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=k.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&
+null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return d.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*
+b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/
+a,8/a)};var f=b.init;b.init=function(){f.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=
+e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor;null!=e.view.backgroundPageShape&&null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||
+c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.gitLab||c++;b&&a&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);
var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c);this.menus.get("exportAs").setEnabled(!c);this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||
null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b);this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&
this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};
@@ -10070,8 +10075,8 @@ DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mx
DrawioFileSync.prototype.updateDescriptor=function(a){this.file.setDescriptor(a);this.file.descriptorChanged();this.start()};
DrawioFileSync.prototype.catchup=function(a,e,c,b){if(null!=a&&(null==b||!b())){var k=this.file.getDescriptorRevisionId(a),f=this.file.getCurrentRevisionId();if(f==k)this.file.patchDescriptor(this.file.getDescriptor(),a),null!=e&&e();else if(this.isValidState()){var l=this.file.getDescriptorSecret(a);if(null==l)this.reload(e,c,b);else{var d=0,g=!1,m=mxUtils.bind(this,function(){if(null==b||!b())if(f!=this.file.getCurrentRevisionId())null!=e&&e();else if(this.isValidState()){var n=!0,p=window.setTimeout(mxUtils.bind(this,
function(){n=!1;this.reload(e,c,b)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(f)+"&to="+encodeURIComponent(k)+(null!=l?"&secret="+encodeURIComponent(l):""),mxUtils.bind(this,function(k){this.file.stats.bytesReceived+=k.getText().length;window.clearTimeout(p);if(n&&(null==b||!b()))if(f!=this.file.getCurrentRevisionId())null!=e&&e();else if(this.isValidState()){var l=null,q=[];if(200<=k.getStatus()&&299>=k.getStatus()&&0<k.getText().length)try{var v=
-JSON.parse(k.getText());if(null!=v&&0<v.length)for(var u=0;u<v.length;u++){var y=this.stringToObject(v[u]);if(y.v>DrawioFileSync.PROTOCOL){g=!0;q=[];break}else if(y.v===DrawioFileSync.PROTOCOL&&null!=y.d)l=y.d.checksum,q.push(y.d.patch);else{g=!0;q=[];break}}}catch(A){q=[],null!=window.console&&"1"==urlParams.test&&console.log(A)}try{0<q.length?(this.file.stats.cacheHits++,this.merge(q,l,a,e,c,b)):d<=this.maxCacheReadyRetries-1&&!g&&401!=k.getStatus()?(d++,this.file.stats.cacheMiss++,window.setTimeout(m,
-(d+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(e,c,b))}catch(A){null!=c&&c(A)}}else null!=c&&c()}))}else null!=c&&c()});window.setTimeout(m,this.cacheReadyDelay)}}else null!=c&&c()}};DrawioFileSync.prototype.reload=function(a,e,c,b){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=e&&e(a)}),c,b)};
+JSON.parse(k.getText());if(null!=v&&0<v.length)for(var u=0;u<v.length;u++){var y=this.stringToObject(v[u]);if(y.v>DrawioFileSync.PROTOCOL){g=!0;q=[];break}else if(y.v===DrawioFileSync.PROTOCOL&&null!=y.d)l=y.d.checksum,q.push(y.d.patch);else{g=!0;q=[];break}}}catch(A){q=[],null!=window.console&&"1"==urlParams.test&&console.log(A)}try{0<q.length?(this.file.stats.cacheHits++,this.merge(q,l,a,e,c,b)):d<=this.maxCacheReadyRetries-1&&!g&&401!=k.getStatus()&&503!=k.getStatus()?(d++,this.file.stats.cacheMiss++,
+window.setTimeout(m,(d+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(e,c,b))}catch(A){null!=c&&c(A)}}else null!=c&&c()}))}else null!=c&&c()});window.setTimeout(m,this.cacheReadyDelay)}}else null!=c&&c()}};DrawioFileSync.prototype.reload=function(a,e,c,b){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=e&&e(a)}),c,b)};
DrawioFileSync.prototype.merge=function(a,e,c,b,k,f){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;var l=this.file.ignorePatches(a),d=this.file.getDescriptorRevisionId(c);if(!l){for(f=0;f<a.length;f++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,
a[f]);var g=null!=e?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentRevisionId(),"to",d,"etag",this.file.getDescriptorEtag(c),"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",e==g,e);if(null!=e&&e!=g){var m=this.ui.hashValue(this.file.getCurrentRevisionId()),n=this.ui.hashValue(d);this.file.checksumError(k,a,"From: "+m+"\nTo: "+n+"\nChecksum: "+e+"\nCurrent: "+g,d,"merge");
return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.patchDescriptor(this.file.getDescriptor(),c);this.file.backupPatch=null;null!=b&&b()}catch(t){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=k&&k(t);try{if(this.file.errorReportsEnabled)m=this.ui.hashValue(this.file.getCurrentRevisionId()),n=this.ui.hashValue(d),this.file.sendErrorReport("Error in merge",
@@ -10124,13 +10129,13 @@ DriveFile.prototype.isConflict=function(a){return null!=a&&null!=a.error&&412==a
DriveFile.prototype.getPublicUrl=function(a){this.ui.drive.executeRequest({url:"/files/"+this.desc.id+"/permissions?supportsAllDrives=true"},mxUtils.bind(this,function(e){if(null!=e&&null!=e.items)for(var c=0;c<e.items.length;c++)if("anyoneWithLink"===e.items[c].id||"anyone"===e.items[c].id){a(this.desc.webContentLink);return}a(null)}),mxUtils.bind(this,function(){a(null)}))};DriveFile.prototype.isAutosaveOptional=function(){return!0};
DriveFile.prototype.isRenamable=function(){return this.isEditable()&&DrawioFile.prototype.isEditable.apply(this,arguments)};DriveFile.prototype.isMovable=function(){return this.isEditable()};DriveFile.prototype.isTrashed=function(){return this.desc.labels.trashed};DriveFile.prototype.save=function(a,e,c,b,k){DrawioFile.prototype.save.apply(this,[a,mxUtils.bind(this,function(){this.saveFile(null,a,e,c,b,k)}),c,b,k])};
DriveFile.prototype.saveFile=function(a,e,c,b,k,f){try{this.isEditable()?this.savingFile||(this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.createSecret(mxUtils.bind(this,function(a,d){var g=mxUtils.bind(this,function(f,l){try{var m=this.desc;this.ui.drive.saveFile(this,l,mxUtils.bind(this,function(a,f){try{this.savingFile=!1,0!=a?(this.setModified(this.getShadowModified()),e&&(this.lastAutosaveRevision=(new Date).getTime()),this.autosaveDelay=Math.min(8E3,Math.max(this.saveDelay+
-500,DriveFile.prototype.autosaveDelay)),this.desc=a,this.fileSaved(f,m,mxUtils.bind(this,function(){this.contentChanged();null!=c&&c(a)}),b,d)):null!=b&&b(a)}catch(q){if(this.savingFile=!1,null!=b)b(q);else throw q;}}),mxUtils.bind(this,function(a,c){try{this.savingFile=!1,this.isConflict(a)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(c,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();this.setShadowModified(!1);
-g(f,!0)}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=b&&b()}))):null!=b&&b()):null!=b&&b(a)}catch(q){if(this.savingFile=!1,null!=b)b(q);else throw q;}}),k,k,f,null,a)}catch(u){if(this.savingFile=!1,null!=b)b(u);else throw u;}});g(f,e)}),mxUtils.bind(this,function(a){this.savingFile=!1;if(null!=b)b(a);else throw a;}))):null!=c&&c()}catch(l){if(null!=b)b(l);else throw l;}};
+500,DriveFile.prototype.autosaveDelay)),this.desc=a,null!=d?this.fileSaved(f,m,mxUtils.bind(this,function(){this.contentChanged();null!=c&&c(a)}),b,d):c(a)):null!=b&&b(a)}catch(q){if(this.savingFile=!1,null!=b)b(q);else throw q;}}),mxUtils.bind(this,function(a,c){try{this.savingFile=!1,this.isConflict(a)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(c,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();this.setShadowModified(!1);
+g(f,!0)}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=b&&b()}))):null!=b&&b()):null!=b&&b(a)}catch(q){if(this.savingFile=!1,null!=b)b(q);else throw q;}}),k,k,f,null,a)}catch(u){if(this.savingFile=!1,null!=b)b(u);else throw u;}});g(f,e)}))):null!=c&&c()}catch(l){if(null!=b)b(l);else throw l;}};
DriveFile.prototype.copyFile=function(a,e){this.isRestricted()?DrawioFile.prototype.copyFile.apply(this,arguments):this.makeCopy(mxUtils.bind(this,function(){if(this.ui.spinner.spin(document.body,mxResources.get("saving")))try{this.save(!0,a,e)}catch(c){e(c)}}),e,!0)};
DriveFile.prototype.makeCopy=function(a,e,c){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.saveAs(this.ui.getCopyFilename(this,c),mxUtils.bind(this,function(b){this.desc=b;this.ui.spinner.stop();this.setModified(!1);this.backupPatch=null;this.inConflictState=this.invalidChecksum=!1;this.descriptorChanged();a()}),mxUtils.bind(this,function(){this.ui.spinner.stop();null!=e&&e()}))};DriveFile.prototype.saveAs=function(a,e,c){this.ui.drive.copyFile(this.getId(),a,e,c)};
DriveFile.prototype.rename=function(a,e,c){var b=this.getCurrentEtag();this.ui.drive.renameFile(this.getId(),a,mxUtils.bind(this,function(k){this.hasSameExtension(a,this.getTitle())?(this.desc=k,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(b),null!=e&&e(k)):(this.desc=k,null!=this.sync&&this.sync.descriptorChanged(b),this.save(!0,e,c))}),c)};
-DriveFile.prototype.move=function(a,e,c){this.ui.drive.moveFile(this.getId(),a,mxUtils.bind(this,function(a){this.desc=a;this.descriptorChanged();null!=e&&e(a)}),c)};DriveFile.prototype.getTitle=function(){return this.desc.title};DriveFile.prototype.getHash=function(){return"G"+this.getId()};DriveFile.prototype.getId=function(){return this.desc.id};DriveFile.prototype.isEditable=function(){return DrawioFile.prototype.isEditable.apply(this,arguments)&&this.desc.editable};
-DriveFile.prototype.isSyncSupported=function(){return!0};DriveFile.prototype.isRevisionHistorySupported=function(){return!0};
+DriveFile.prototype.move=function(a,e,c){this.ui.drive.moveFile(this.getId(),a,mxUtils.bind(this,function(a){this.desc=a;this.descriptorChanged();null!=e&&e(a)}),c)};DriveFile.prototype.share=function(){this.ui.drive.showPermissions(this.getId())};DriveFile.prototype.getTitle=function(){return this.desc.title};DriveFile.prototype.getHash=function(){return"G"+this.getId()};DriveFile.prototype.getId=function(){return this.desc.id};
+DriveFile.prototype.isEditable=function(){return DrawioFile.prototype.isEditable.apply(this,arguments)&&this.desc.editable};DriveFile.prototype.isSyncSupported=function(){return!0};DriveFile.prototype.isRevisionHistorySupported=function(){return!0};
DriveFile.prototype.getRevisions=function(a,e){this.ui.drive.executeRequest({url:"/files/"+this.getId()+"/revisions"},mxUtils.bind(this,function(c){for(var b=0;b<c.items.length;b++)mxUtils.bind(this,function(a){a.title=a.originalFilename;a.getXml=mxUtils.bind(this,function(b,c){this.ui.drive.getXmlFile(a,mxUtils.bind(this,function(a){b(a.getData())}),c)});a.getUrl=mxUtils.bind(this,function(b){return this.ui.getUrl(window.location.pathname+"?rev="+a.id+"&chrome=0&nav=1&layers=1&edit=_blank"+(null!=
b?"&page="+b:""))+window.location.hash})})(c.items[b]);a(c.items)}),e)};DriveFile.prototype.getLatestVersion=function(a,e){this.ui.drive.getFile(this.getId(),a,e,!0)};DriveFile.prototype.getChannelId=function(){var a=this.ui.drive.getCustomProperty(this.desc,"channel");null!=a&&(a="G-"+this.getId()+"."+a);return a};DriveFile.prototype.getChannelKey=function(){return this.ui.drive.getCustomProperty(this.desc,"key")};DriveFile.prototype.getLastModifiedDate=function(){return new Date(this.desc.modifiedDate)};
DriveFile.prototype.getDescriptor=function(){return this.desc};DriveFile.prototype.setDescriptor=function(a){this.desc=a};DriveFile.prototype.getDescriptorSecret=function(a){return this.ui.drive.getCustomProperty(a,"secret")};DriveFile.prototype.setDescriptorRevisionId=function(a,e){a.headRevisionId=e};DriveFile.prototype.getDescriptorRevisionId=function(a){return a.headRevisionId};DriveFile.prototype.getDescriptorEtag=function(a){return a.etag};
@@ -10237,11 +10242,13 @@ DropboxClient.prototype.pickFile=function(a,e){null!=Dropbox.choose?(a=null!=a?a
function(b,c){this.ui.spinner.stop();a(b,c)}),f=/\.png$/i.test(c[0].name);if(/\.vsdx$/i.test(c[0].name)||/\.gliffy$/i.test(c[0].name)||!this.ui.useCanvasForExport&&f)k(c[0].link);else{var l=c[0].link.indexOf(this.appPath);if(0<l){var d=decodeURIComponent(c[0].link.substring(l+this.appPath.length-1));this.readFile({path:d},mxUtils.bind(this,function(e,l){if(null!=l&&l.id==c[0].id){var g=f?e.lastIndexOf(","):-1;this.ui.spinner.stop();var m=null;0<g&&(g=this.ui.extractGraphModelFromPng(e.substring(g+
1)),null!=g&&0<g.length?e=g:m=new LocalFile(this,e,d,!0));a(d.substring(1),null!=m?m:new DropboxFile(this.ui,e,l))}else this.createFile(c[0],k,b)}),b,f)}else this.createFile(c[0],k,b)}}})})):this.ui.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})};
DropboxClient.prototype.createFile=function(a,e,c){var b=/(\.png)$/i.test(a.name);this.ui.editor.loadUrl(a.link,mxUtils.bind(this,function(k){null!=k&&0<k.length?this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){var f=b?k.lastIndexOf(","):-1;0<f&&(f=this.ui.extractGraphModelFromPng(k.substring(f+1)),null!=f&&0<f.length&&(k=f));this.insertFile(a.name,k,mxUtils.bind(this,function(b){e(a.name,b)}),c)}),mxUtils.bind(this,function(){this.ui.spinner.stop()})):
-(this.ui.spinner.stop(),c({message:mxResources.get("errorLoadingFile")}))}),c,b)};OneDriveFile=function(a,e,c){DrawioFile.call(this,a,e);this.meta=c};mxUtils.extend(OneDriveFile,DrawioFile);OneDriveFile.prototype.getId=function(){return this.getIdOf(this.meta)};OneDriveFile.prototype.getParentId=function(){return this.getIdOf(this.meta,!0)};OneDriveFile.prototype.getIdOf=function(a,e){return(null!=a.parentReference&&null!=a.parentReference.driveId?a.parentReference.driveId+"/":"")+(null!=e?a.parentReference.id:a.id)};
-OneDriveFile.prototype.getChannelId=function(){return"W-"+DrawioFile.prototype.getChannelId.apply(this,arguments)};OneDriveFile.prototype.getHash=function(){return"W"+encodeURIComponent(this.getId())};OneDriveFile.prototype.getMode=function(){return App.MODE_ONEDRIVE};OneDriveFile.prototype.isAutosaveOptional=function(){return!0};OneDriveFile.prototype.getTitle=function(){return this.meta.name};OneDriveFile.prototype.isRenamable=function(){return!0};OneDriveFile.prototype.isSyncSupported=function(){return!0};
-OneDriveFile.prototype.getSize=function(){return this.meta.size};OneDriveFile.prototype.isConflict=function(a){return null!=a&&(412==a.getStatus()||409==a.getStatus())};OneDriveFile.prototype.getCurrentUser=function(){return null!=this.ui.oneDrive?this.ui.oneDrive.user:null};
-OneDriveFile.prototype.loadDescriptor=function(a,e){this.ui.oneDrive.executeRequest(this.ui.oneDrive.getItemURL(this.getId()),mxUtils.bind(this,function(c){200<=c.getStatus()&&299>=c.getStatus()?a(JSON.parse(c.getText())):null!=e&&e()}),e)};OneDriveFile.prototype.getLatestVersion=function(a,e){this.ui.oneDrive.getFile(this.getId(),a,e)};OneDriveFile.prototype.getDescriptor=function(){return this.meta};OneDriveFile.prototype.setDescriptor=function(a){this.meta=a};
-OneDriveFile.prototype.getDescriptorEtag=function(a){return a.eTag};OneDriveFile.prototype.setDescriptorEtag=function(a,e){a.eTag=e};OneDriveFile.prototype.loadPatchDescriptor=function(a,e){var c=this.ui.oneDrive.getItemURL(this.getId());this.ui.oneDrive.executeRequest(c+"?select=etag,file",mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?a(JSON.parse(b.getText())):e(this.ui.oneDrive.parseRequestText(b))}),e)};
+(this.ui.spinner.stop(),c({message:mxResources.get("errorLoadingFile")}))}),c,b)};OneDriveFile=function(a,e,c){DrawioFile.call(this,a,e);console.log("meta",c);this.meta=c};mxUtils.extend(OneDriveFile,DrawioFile);
+OneDriveFile.prototype.share=function(){var a=this.meta.webUrl,a=a.substring(0,a.lastIndexOf("/"));if(null!=this.meta.parentReference)try{if("personal"==this.meta.parentReference.driveType)a="https://onedrive.live.com/?cid="+encodeURIComponent(this.meta.parentReference.driveId)+"&id="+encodeURIComponent(this.meta.id);else if("documentLibrary"==this.meta.parentReference.driveType)var e=this.meta.parentReference.path,e=e.substring(e.indexOf("/root:")+6),c=this.meta.webUrl,a=c.substring(0,c.length-e.length-
+this.meta.name.length-(0<e.length?1:0)),c=c.substring(c.indexOf("/",8)),a=a+"/Forms/AllItems.aspx?id="+c+"&parent="+c.substring(0,c.lastIndexOf("/"));else if("business"==this.meta.parentReference.driveType)var a=this.meta["@microsoft.graph.downloadUrl"],b=a.indexOf("/_layouts/15/download.aspx?"),e=c=this.meta.webUrl,c=c.substring(8),c=c.substring(c.indexOf("/")),e=e.substring(0,e.lastIndexOf("/")),e=e.substring(e.indexOf("/",8)),a=a.substring(0,b)+"/_layouts/15/onedrive.aspx?id="+c+"&parent="+e}catch(k){}this.ui.editor.graph.openLink(a)};
+OneDriveFile.prototype.getId=function(){return this.getIdOf(this.meta)};OneDriveFile.prototype.getParentId=function(){return this.getIdOf(this.meta,!0)};OneDriveFile.prototype.getIdOf=function(a,e){return(null!=a.parentReference&&null!=a.parentReference.driveId?a.parentReference.driveId+"/":"")+(null!=e?a.parentReference.id:a.id)};OneDriveFile.prototype.getChannelId=function(){return"W-"+DrawioFile.prototype.getChannelId.apply(this,arguments)};OneDriveFile.prototype.getHash=function(){return"W"+encodeURIComponent(this.getId())};
+OneDriveFile.prototype.getMode=function(){return App.MODE_ONEDRIVE};OneDriveFile.prototype.isAutosaveOptional=function(){return!0};OneDriveFile.prototype.getTitle=function(){return this.meta.name};OneDriveFile.prototype.isRenamable=function(){return!0};OneDriveFile.prototype.isSyncSupported=function(){return!0};OneDriveFile.prototype.getSize=function(){return this.meta.size};OneDriveFile.prototype.isConflict=function(a){return null!=a&&(412==a.getStatus()||409==a.getStatus())};
+OneDriveFile.prototype.getCurrentUser=function(){return null!=this.ui.oneDrive?this.ui.oneDrive.user:null};OneDriveFile.prototype.loadDescriptor=function(a,e){this.ui.oneDrive.executeRequest(this.ui.oneDrive.getItemURL(this.getId()),mxUtils.bind(this,function(c){200<=c.getStatus()&&299>=c.getStatus()?a(JSON.parse(c.getText())):null!=e&&e()}),e)};OneDriveFile.prototype.getLatestVersion=function(a,e){this.ui.oneDrive.getFile(this.getId(),a,e)};OneDriveFile.prototype.getDescriptor=function(){return this.meta};
+OneDriveFile.prototype.setDescriptor=function(a){this.meta=a};OneDriveFile.prototype.getDescriptorEtag=function(a){return a.eTag};OneDriveFile.prototype.setDescriptorEtag=function(a,e){a.eTag=e};OneDriveFile.prototype.loadPatchDescriptor=function(a,e){var c=this.ui.oneDrive.getItemURL(this.getId());this.ui.oneDrive.executeRequest(c+"?select=etag,file",mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?a(JSON.parse(b.getText())):e(this.ui.oneDrive.parseRequestText(b))}),e)};
OneDriveFile.prototype.getChannelKey=function(){return"undefined"!==typeof CryptoJS?CryptoJS.MD5(this.meta.createdDateTime+(null!=this.meta.createdBy&&null!=this.meta.createdBy.user?this.meta.createdBy.user.id:"")).toString():null};OneDriveFile.prototype.getLastModifiedDate=function(){return new Date(this.meta.lastModifiedDateTime)};OneDriveFile.prototype.save=function(a,e,c,b,k){this.doSave(this.getTitle(),a,e,c,b,k)};OneDriveFile.prototype.saveAs=function(a,e,c){this.doSave(a,!1,e,c)};
OneDriveFile.prototype.doSave=function(a,e,c,b,k,f){var l=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=l;this.saveFile(a,e,c,b,k,f)}),b,k,f])};
OneDriveFile.prototype.saveFile=function(a,e,c,b,k,f){if(!this.isEditable())null!=c&&c();else if(!this.savingFile)if(this.getTitle()==a){var l=mxUtils.bind(this,function(){try{this.savingFileTime=new Date;this.setShadowModified(!1);this.savingFile=!0;var a=f||this.constructor!=OneDriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:this.getCurrentEtag(),e=this.meta;this.ui.oneDrive.saveFile(this,mxUtils.bind(this,function(a,d){this.setModified(this.getShadowModified());this.savingFile=
@@ -10283,7 +10290,8 @@ OneDriveClient.prototype.pickFolder=function(a,e){var c=mxUtils.bind(this,functi
error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})})});b?c():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){a({value:[{id:"root",name:"root",parentReference:{driveId:"me"}}]})}),c,mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0);null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){c(!1)}),this.emptyFn):c(e)};
OneDriveClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("W"+encodeURIComponent(a))});var e=mxUtils.bind(this,function(){OneDrive.open({clientId:this.clientId,action:"query",multiSelect:!1,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:this.token,isConsumerAccount:!1},success:mxUtils.bind(this,function(c){null!=c&&null!=c.value&&0<c.value.length&&
(mxClient.IS_IE11&&(this.token=c.accessToken),a(OneDriveFile.prototype.getIdOf(c.value[0]),c))}),cancel:mxUtils.bind(this,function(){}),error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})});null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){this.ui.showDialog((new BtnDialog(this.ui,this,mxResources.get("open"),mxUtils.bind(this,function(){e();this.ui.hideDialog()}))).container,
-300,140,!0,!0)}),this.emptyFn):e()};OneDriveClient.prototype.logout=function(){if(isLocalStorage){var a=localStorage.getItem("odpickerv7cache");null!=a&&'{"odsdkLoginHint":{'==a.substring(0,19)&&localStorage.removeItem("odpickerv7cache")}window.open("https://login.microsoftonline.com/common/oauth2/v2.0/logout","logout","width=525,height=525,status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes");this.clearPersistentToken();this.setUser(null);this.token=null};GitHubFile=function(a,e,c){DrawioFile.call(this,a,e);this.meta=c;this.peer=this.ui.gitHub};mxUtils.extend(GitHubFile,DrawioFile);GitHubFile.prototype.getId=function(){return encodeURIComponent(this.meta.org)+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitHubFile.prototype.getHash=function(){return encodeURIComponent("H"+this.getId())};
+300,140,!0,!0)}),this.emptyFn):e()};OneDriveClient.prototype.logout=function(){if(isLocalStorage){var a=localStorage.getItem("odpickerv7cache");null!=a&&'{"odsdkLoginHint":{'==a.substring(0,19)&&localStorage.removeItem("odpickerv7cache")}window.open("https://login.microsoftonline.com/common/oauth2/v2.0/logout","logout","width=525,height=525,status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes");this.clearPersistentToken();this.setUser(null);this.token=null};GitHubFile=function(a,e,c){DrawioFile.call(this,a,e);this.meta=c;this.peer=this.ui.gitHub};mxUtils.extend(GitHubFile,DrawioFile);GitHubFile.prototype.share=function(){this.ui.editor.graph.openLink("https://github.com/"+encodeURIComponent(this.meta.org)+"/"+encodeURIComponent(this.meta.repo)+"/settings/access")};
+GitHubFile.prototype.getId=function(){return encodeURIComponent(this.meta.org)+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitHubFile.prototype.getHash=function(){return encodeURIComponent("H"+this.getId())};
GitHubFile.prototype.getPublicUrl=function(a){null!=this.meta.download_url?mxUtils.get(this.meta.download_url,mxUtils.bind(this,function(e){a(200<=e.getStatus()&&299>=e.getStatus()?this.meta.download_url:null)}),mxUtils.bind(this,function(){a(null)})):a(null)};GitHubFile.prototype.isConflict=function(a){return null!=a&&409==a.status};GitHubFile.prototype.getMode=function(){return App.MODE_GITHUB};GitHubFile.prototype.isAutosave=function(){return!1};GitHubFile.prototype.getTitle=function(){return this.meta.name};
GitHubFile.prototype.isRenamable=function(){return!1};GitHubFile.prototype.getLatestVersion=function(a,e){this.peer.getFile(this.getId(),a,e)};GitHubFile.prototype.isCompressedStorage=function(){return!1};GitHubFile.prototype.getDescriptor=function(){return this.meta};GitHubFile.prototype.setDescriptor=function(a){this.meta=a};GitHubFile.prototype.getDescriptorEtag=function(a){return a.sha};GitHubFile.prototype.setDescriptorEtag=function(a,e){a.sha=e};
GitHubFile.prototype.save=function(a,e,c,b,k,f){this.doSave(this.getTitle(),e,c,b,k,f)};GitHubFile.prototype.saveAs=function(a,e,c){this.doSave(a,e,c)};GitHubFile.prototype.doSave=function(a,e,c,b,k,f){var l=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=l;this.saveFile(a,!1,e,c,b,k,f)}),c,b,k])};
@@ -10344,8 +10352,9 @@ f.src=c.url;f.width=c.width;f.height=c.height;f.style="border: 1px solid black;m
b.status?this.authenticate(a,m,!0):null!=m&&m(b)}))});a()}),p=null,u=null,t=mxUtils.bind(this,function(f){null==f&&(k=0,d.innerHTML="",f=1);this.ui.spinner.spin(d,mxResources.get("loading"));null!=p&&null!=p.parentNode&&p.parentNode.removeChild(p);p=document.createElement("a");p.style.display="block";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){mxEvent.removeListener(d,"scroll",u);t(f+1)});mxEvent.addListener(p,"click",l);var q=mxUtils.bind(this,
function(){Trello.get("search",{query:""==mxUtils.trim(b)?"is:open":b,cards_limit:100,cards_page:f-1},mxUtils.bind(this,function(k){this.ui.spinner.stop();k=null!=k?k.cards:null;if(null==k||0==k.length)mxUtils.write(d,mxResources.get("noFiles"));else{1==f&&(d.appendChild(g(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,b,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(b=a,t())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards");
this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(d));for(var m=0;m<k.length;m++)mxUtils.bind(this,function(b){d.appendChild(g(b.name,mxUtils.bind(this,function(){a?(c=b.id,n()):(this.ui.hideDialog(),e(b.id))})))})(k[m]);100==k.length&&(d.appendChild(p),u=function(){d.scrollTop>=d.scrollHeight-d.offsetHeight&&l()},mxEvent.addListener(d,"scroll",u))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(q,m,!0):null!=m&&m({message:a.responseText})}))});q()});t()};
-TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};GitLabFile=function(a,e,c){GitHubFile.call(this,a,e,c);this.peer=this.ui.gitLab};mxUtils.extend(GitLabFile,GitHubFile);GitLabFile.prototype.getId=function(){return this.meta.org+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitLabFile.prototype.getHash=function(){return encodeURIComponent("A"+this.getId())};GitLabFile.prototype.isConflict=function(a){return null!=a&&400==a.status};
-GitLabFile.prototype.getMode=function(){return App.MODE_GITLAB};GitLabFile.prototype.getDescriptorEtag=function(a){return a.last_commit_id};GitLabFile.prototype.setDescriptorEtag=function(a,e){a.last_commit_id=e};GitLabLibrary=function(a,e,c){GitLabFile.call(this,a,e,c)};mxUtils.extend(GitLabLibrary,GitLabFile);GitLabLibrary.prototype.doSave=function(a,e,c){this.saveFile(a,!1,e,c)};GitLabLibrary.prototype.open=function(){};GitLabClient=function(a){GitHubClient.call(this,a,"gitlabauth")};mxUtils.extend(GitLabClient,GitHubClient);GitLabClient.prototype.clientId=DRAWIO_GITLAB_ID;GitLabClient.prototype.scope="api%20read_repository%20write_repository";GitLabClient.prototype.baseUrl=DRAWIO_GITLAB_URL+"/api/v4";GitLabClient.prototype.authToken="Bearer";
+TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};GitLabFile=function(a,e,c){GitHubFile.call(this,a,e,c);this.peer=this.ui.gitLab};mxUtils.extend(GitLabFile,GitHubFile);GitLabFile.prototype.share=function(){this.ui.editor.graph.openLink("https://gitlab.com/"+encodeURIComponent(this.meta.org)+"/"+encodeURIComponent(this.meta.repo)+"/-/project_members")};
+GitLabFile.prototype.getId=function(){return this.meta.org+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitLabFile.prototype.getHash=function(){return encodeURIComponent("A"+this.getId())};GitLabFile.prototype.isConflict=function(a){return null!=a&&400==a.status};GitLabFile.prototype.getMode=function(){return App.MODE_GITLAB};GitLabFile.prototype.getDescriptorEtag=function(a){return a.last_commit_id};
+GitLabFile.prototype.setDescriptorEtag=function(a,e){a.last_commit_id=e};GitLabLibrary=function(a,e,c){GitLabFile.call(this,a,e,c)};mxUtils.extend(GitLabLibrary,GitLabFile);GitLabLibrary.prototype.doSave=function(a,e,c){this.saveFile(a,!1,e,c)};GitLabLibrary.prototype.open=function(){};GitLabClient=function(a){GitHubClient.call(this,a,"gitlabauth")};mxUtils.extend(GitLabClient,GitHubClient);GitLabClient.prototype.clientId=DRAWIO_GITLAB_ID;GitLabClient.prototype.scope="api%20read_repository%20write_repository";GitLabClient.prototype.baseUrl=DRAWIO_GITLAB_URL+"/api/v4";GitLabClient.prototype.authToken="Bearer";
GitLabClient.prototype.authenticate=function(a,e){if(null==window.onGitLabCallback){var c=mxUtils.bind(this,function(){var b=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(k,f){var l=window.location.href,l=l.substring(0,l.lastIndexOf("/")),l=encodeURIComponent(l+"/gitlab.html");null!=window.open(DRAWIO_GITLAB_URL+"/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope+"&redirect_uri="+l+"&response_type=token&state=123","gitlabauth")?window.onGitLabCallback=mxUtils.bind(this,
function(d,g){b?(window.onGitLabCallback=null,b=!1,null==d?e({message:mxResources.get("accessDenied"),retry:c}):(null!=f&&f(),this.token=d,this.setUser(null),k&&this.setPersistentToken(this.token),a())):null!=g&&g.close()}):e({message:mxResources.get("serviceUnavailableOrBlocked"),retry:c})}),mxUtils.bind(this,function(){b&&(window.onGitLabCallback=null,b=!1,e({message:mxResources.get("accessDenied"),retry:c}))}))});c()}else e({code:App.ERROR_BUSY})};
GitLabClient.prototype.executeRequest=function(a,e,c,b){var k=mxUtils.bind(this,function(l){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;c({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),m=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",m);a.setRequestHeader("PRIVATE_TOKEN",m);a.setRequestHeader("Content-Type","application/json")};a.send(mxUtils.bind(this,function(){window.clearTimeout(g);if(d)if(200<=
@@ -10547,9 +10556,9 @@ function(a){try{e(new RemoteLibrary(this,a,q))}catch(y){g()}}),function(){g()})}
(v=this.dropbox):"W"==l&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(v=this.oneDrive);null!=v?v.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{e(a)}catch(y){g()}}),function(a){g()}):g(!0)}}})(d,l)}f()}};
App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();this.commentsSupported()?null==this.commentButton&&(this.commentButton=document.createElement("a"),this.commentButton.setAttribute("title",mxResources.get("comments")),this.commentButton.className="geToolbarButton",this.commentButton.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;float:left;cursor:pointer;width:24px;height:24px;background-size:24px 24px;background-position:center center;background-repeat:no-repeat;background-image:url("+
Editor.commentImage+");","atlas"==uiTheme?(this.commentButton.style.marginRight="10px",this.commentButton.style.marginTop="-3px"):this.commentButton.style.marginTop="min"==uiTheme?"1px":"-5px",mxEvent.addListener(this.commentButton,"click",mxUtils.bind(this,function(){this.actions.get("comments").funct()})),this.buttonContainer.appendChild(this.commentButton),"dark"==uiTheme||"atlas"==uiTheme)&&(this.commentButton.style.filter="invert(100%)"):null!=this.commentButton&&(this.commentButton.parentNode.removeChild(this.commentButton),
-this.commentButton=null);null!=a&&a.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.backgroundColor="#F2931E",this.shareButton.style.borderColor="#F08705",this.shareButton.style.backgroundImage="none",this.shareButton.style.padding="2px 10px 0 10px",this.shareButton.style.marginTop="-10px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight=
-"28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),"dark"!=uiTheme&&"atlas"!=uiTheme&&(this.shareButton.style.color="black",a.style.filter="invert(100%)"),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,
-"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)):null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null)}};
+this.commentButton=null);"1"==urlParams.embed||"draw.io"!=this.getServiceName()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||this.isOfflineApp()||null==a?null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null):null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.backgroundColor="#F2931E",this.shareButton.style.borderColor=
+"#F08705",this.shareButton.style.backgroundImage="none",this.shareButton.style.padding="2px 10px 0 10px",this.shareButton.style.marginTop="-10px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop=
+"-3px",this.shareButton.appendChild(a),"dark"!=uiTheme&&"atlas"!=uiTheme&&(this.shareButton.style.color="black",a.style.filter="invert(100%)"),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton))}};
App.prototype.save=function(a,e){var c=this.getCurrentFile();if(null!=c&&this.spinner.spin(document.body,mxResources.get("saving"))){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var b=mxUtils.bind(this,function(){c.handleFileSuccess(!0);null!=e&&e()}),k=mxUtils.bind(this,function(b){c.isModified()&&Editor.addRetryToError(b,mxUtils.bind(this,function(){this.save(a,e)}));c.handleFileError(b,!0)});try{a==c.getTitle()?c.save(!0,b,k):c.saveAs(a,b,k)}catch(f){k(f)}}};
App.prototype.pickFolder=function(a,e,c,b,k){c=null!=c?c:!0;var f=this.spinner.pause();c&&a==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){f();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);e(b)}}),k):c&&a==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){f();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]),
e(a))}),b):c&&a==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){f();e(a)})):c&&a==App.MODE_GITLAB&&null!=this.gitLab?this.gitLab.pickFolder(mxUtils.bind(this,function(a){f();e(a)})):c&&a==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){f();e(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)};
@@ -10692,49 +10701,49 @@ a.constructor==DriveFile||a.constructor==StorageFile?mxResources.get("diagramNam
b.getCurrentFile();if(null!=a){var c=b.getCopyFilename(a);a.constructor==DriveFile?(c=new CreateDialog(b,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE);null!=c&&0<c.length&&(d==App.MODE_GOOGLE?b.spinner.spin(document.body,mxResources.get("saving"))&&a.saveAs(c,mxUtils.bind(this,function(c){a.desc=c;a.save(!1,mxUtils.bind(this,function(){b.spinner.stop();a.setModified(!1);a.addAllSavedStatus()}),mxUtils.bind(this,function(a){b.handleError(a)}))}),mxUtils.bind(this,function(a){b.handleError(a)})):
b.createFile(c,b.getFileData(!0),null,d))}),mxUtils.bind(this,function(){b.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,null,null,!0,null,null,null,null,b.editor.fileExtensions),b.showDialog(c.container,420,380,!0,!0),c.init()):b.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));b.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var a=b.getCurrentFile();if(a.getMode()==App.MODE_GOOGLE||a.getMode()==App.MODE_ONEDRIVE){var c=!1;if(a.getMode()==App.MODE_GOOGLE&&
null!=a.desc.parents)for(var d=0;d<a.desc.parents.length;d++)if(a.desc.parents[d].isRoot){c=!0;break}b.pickFolder(a.getMode(),mxUtils.bind(this,function(c){b.spinner.spin(document.body,mxResources.get("moving"))&&a.move(c,mxUtils.bind(this,function(a){b.spinner.stop()}),mxUtils.bind(this,function(a){b.handleError(a)}))}),null,!0,c)}}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));b.actions.put("useOffline",new Action(mxResources.get("useOffline")+
-"...",function(){b.openLink("https://app.draw.io/")}));b.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){b.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var a=b.getCurrentFile();null!=a&&b.drive.showPermissions(a.getId())}catch(B){b.handleError(B)}}));this.put("embed",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();null==d||d.getMode()!=App.MODE_GOOGLE&&d.getMode()!=App.MODE_GITHUB||
-!/(\.png)$/i.test(d.getTitle())||this.addMenuItems(a,["liveImage","-"],c);this.addMenuItems(a,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||b.isOffline()||this.addMenuItems(a,["embedIframe"],c);"1"==urlParams.embed||b.isOffline()||this.addMenuItems(a,"- googleDocs googleSlides googleSheets - microsoftOffice".split(" "),c)})));var v=function(a,c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!b.isOffline())&&a.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==
-e||"plantUml"==e||"mermaid"==e){var a=new ParseDialog(b,d,e);b.showDialog(a.container,620,420,!0,!1);b.dialog.container.style.overflow="auto"}else a=new CreateGraphDialog(b,d,e),b.showDialog(a.container,620,420,!0,!1);a.init()}),c,null,f())},x=function(a,c,d,e){var f=new mxCell(a,new mxGeometry(0,0,c,d),e);f.vertex=!0;a=k.getCenterInsertPoint(k.getBoundingBoxFromGeometry([f],!0));f.geometry.x=a.x;f.geometry.y=a.y;k.getModel().beginUpdate();try{f=k.addCell(f),k.fireEvent(new mxEventObject("cellsInserted",
-"cells",[f]))}finally{k.getModel().endUpdate()}k.scrollCellToVisible(f);k.setSelectionCell(f);k.container.focus();k.editAfterInsert&&k.startEditing(f);window.setTimeout(function(){null!=b.hoverIcons&&b.hoverIcons.update(k.view.getState(f))},0);return f};b.actions.put("insertText",new Action(mxResources.get("text"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&k.startEditingAtCell(x("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),
-null,null,Editor.ctrlKey+"+Shift+X").isEnabled=f;b.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&x("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=f;b.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&x("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=f;b.actions.put("insertRhombus",
-new Action(mxResources.get("rhombus"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&x("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=f;var y=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):v(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),
-c);b.insertTemplateEnabled&&!b.isOffline()&&this.addMenuItems(a,["insertTemplate"],c);a.addSeparator(c);this.addSubmenu("insertLayout",a,c,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,c,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){y(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,c){y(a,c,["fromText","plantUml",
-"mermaid","-","formatSql"]);a.addItem(mxResources.get("csv")+"...",null,function(){b.showImportCsvDialog()},c,null,f())})));this.put("openRecent",new Menu(function(a,c){var d=b.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&&(e="oneDrive");a.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){b.loadFile(d.id)},c)})(d[e]);a.addSeparator(c)}a.addItem(mxResources.get("reset"),null,function(){b.resetRecent()},
-c)}));this.put("openFrom",new Menu(function(a,c){null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.pickFile(App.MODE_GOOGLE)},c):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickFile(App.MODE_ONEDRIVE)},c):g&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+
-" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.pickFile(App.MODE_DROPBOX)},c):d&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickFile(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+
-"...",null,function(){b.pickFile(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickFile(App.MODE_TRELLO)},c):m&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickFile(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,
-function(){b.pickFile(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),function(a){null!=a&&0<a.length&&(null==b.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(a):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(a)))},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);
-a.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+
-"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):g&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):d&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},
-c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},c):m&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+
-" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+
-"...",null,function(){b.pickLibrary(App.MODE_GOOGLE)},c):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickLibrary(App.MODE_ONEDRIVE)},c):g&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+
-"...",null,function(){b.pickLibrary(App.MODE_DROPBOX)},c):d&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickLibrary(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickLibrary(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",
-null,function(){b.pickLibrary(App.MODE_TRELLO)},c):m&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickLibrary(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickLibrary(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+
-"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),function(a){if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("loading"))){var c=a;b.editor.isCorsEnabledForUrl(a)||(c=PROXY_URL+"?url="+encodeURIComponent(a));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){b.spinner.stop();try{b.loadLibrary(new UrlLibrary(this,c.getText(),a))}catch(I){b.handleError(I,mxResources.get("errorLoadingFile"))}}else b.spinner.stop(),b.handleError(null,mxResources.get("errorLoadingFile"))},
-function(){b.spinner.stop();b.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c));"1"==urlParams.confLib&&(a.addSeparator(c),a.addItem(mxResources.get("confluenceCloud")+"...",null,function(){b.showRemotelyStoredLibrary(mxResources.get("libraries"))},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["undo","redo","-","cut","copy"]);EditorUi.isElectronApp&&this.addMenuItems(a,["copyAsImage"]);
-this.addMenuItems(a,"paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));n=b.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(b,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",
-function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("comments"));else{var a=!this.commentsWindow.window.isVisible();this.commentsWindow.window.setVisible(a);this.commentsWindow.refreshCommentsTime();a&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));b.editor.addListener("fileLoaded",
-mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var n=this.get("viewPanels"),A=n.funct;n.funct=function(a,c){A.apply(this,arguments);b.commentsSupported()&&b.menus.addMenuItems(a,["comments"],c)};this.put("view",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers"]).concat(b.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(a,["-","search"],
-c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(a,"scratchpad",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(a,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",a,c);this.addMenuItems(a,"- scrollbars tooltips ruler - grid guides".split(" "),c);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(a,"shadowVisible",
-c);this.addMenuItems(a,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),c)})));this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",a,c),a.addSeparator(c));if("undefined"!==typeof MathJax){var d=this.addMenuItem(a,"mathematicalTypesetting",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}this.addMenuItems(a,["copyConnect",
-"collapseExpand","-"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(a,["showStartScreen"],c);"1"!=urlParams.embed&&this.addMenuItems(a,["autosave"],c);a.addSeparator(c);!b.isOfflineApp()&&isLocalStorage&&this.addMenuItem(a,"plugins",c);this.addMenuItems(a,["tags","-","editDiagram","-","configuration"],c);a.addSeparator(c);"1"==urlParams.newTempDlg&&(b.actions.addAction("templates",function(){var a=new TemplatesDialog;b.showDialog(a.container,a.width,a.height,
-!0,!1,null,!1,!0);a.init(b,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123",title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):
-a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,
-b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"}])},2E3)},null)}),this.addMenuItem(a,"templates",
-c))})));this.put("file",new Menu(mxUtils.bind(this,function(a,c){if("1"==urlParams.embed)this.addSubmenu("importFrom",a,c),this.addSubmenu("exportAs",a,c),this.addSubmenu("embed",a,c),"1"==urlParams.libraries&&(this.addMenuItems(a,["-"],c),this.addSubmenu("newLibrary",a,c),this.addSubmenu("openLibraryFrom",a,c)),b.isRevisionHistorySupported()&&this.addMenuItems(a,["-","revisionHistory"],c),this.addMenuItems(a,["-","pageSetup","print","-","rename"],c),"1"==urlParams.noSaveBtn?"0"!=urlParams.saveAndExit&&
-this.addMenuItems(a,["saveAndExit"],c):(this.addMenuItems(a,["save"],c),"1"==urlParams.saveAndExit&&this.addMenuItems(a,["saveAndExit"],c)),"1"!=urlParams.noExitBtn&&this.addMenuItems(a,["exit"],c);else{var d=this.editorUi.getCurrentFile();if(null!=d&&d.constructor==DriveFile){d.isRestricted()&&this.addMenuItems(a,["exportOptionsDisabled"],c);this.addMenuItems(a,["save","-","share"],c);var e=this.addMenuItem(a,"synchronize",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,
-"https://desk.draw.io/support/solutions/articles/16000087947");a.addSeparator(c)}else this.addMenuItems(a,["new"],c);this.addSubmenu("openFrom",a,c);isLocalStorage&&this.addSubmenu("openRecent",a,c);null!=d&&d.constructor==DriveFile?this.addMenuItems(a,["new","-","rename","makeCopy","moveToFolder"],c):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile&&null==d.fileHandle||(a.addSeparator(c),e=this.addMenuItem(a,"synchronize",c),(!b.isOffline()||mxClient.IS_CHROMEAPP||
-EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947")),this.addMenuItems(a,["-","save","saveAs"],c),this.addMenuItems(a,["-","rename"],c),b.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],c):(this.addMenuItems(a,["makeCopy"],c),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(a,["moveToFolder"],c)));a.addSeparator(c);this.addSubmenu("importFrom",a,c);this.addSubmenu("exportAs",a,c);a.addSeparator(c);
-this.addSubmenu("embed",a,c);this.addSubmenu("publish",a,c);a.addSeparator(c);this.addSubmenu("newLibrary",a,c);this.addSubmenu("openLibraryFrom",a,c);b.isRevisionHistorySupported()&&this.addMenuItems(a,["-","revisionHistory"],c);null!=d&&null!=b.fileNode&&(d=null!=d.getTitle()?d.getTitle():b.defaultFilename,/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||this.addMenuItems(a,["-","properties"]));this.addMenuItems(a,["-","pageSetup"],c);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["print"],
-c);this.addMenuItems(a,["-","close"])}})));a.prototype.execute=function(){var a=this.ui.editor.graph;this.customFonts=this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));this.extFonts=this.previousExtFonts;for(var b=a.extFonts,c=0;null!=b&&c<b.length;c++){var d=document.getElementById("extFont_"+b[c].name);null!=d&&d.parentNode.removeChild(d)}a.extFonts=[];for(c=0;null!=this.previousExtFonts&&
-c<this.previousExtFonts.length;c++)this.ui.editor.graph.addExtFont(this.previousExtFonts[c].name,this.previousExtFonts[c].url);this.previousExtFonts=b};this.put("fontFamily",new Menu(mxUtils.bind(this,function(b,c){for(var d=mxUtils.bind(this,function(d,e,f){var g=this.editorUi.editor.graph,k=this.styleChange(b,d,[mxConstants.STYLE_FONTFAMILY],[d],null,c,function(){document.execCommand("fontname",!1,d);g.addExtFont(d,e)},function(){g.updateLabelElements(g.getSelectionCells(),function(a){a.removeAttribute("face");
-a.style.fontFamily=null;"PRE"==a.nodeName&&g.replaceElement(a,"div")});g.addExtFont(d,e)});f&&(f=document.createElement("span"),f.className="geSprite geSprite-delete",f.style.cursor="pointer",f.style.display="inline-block",k.firstChild.nextSibling.nextSibling.appendChild(f),mxEvent.addListener(f,mxClient.IS_POINTER?"pointerup":"mouseup",mxUtils.bind(this,function(b){var c=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=c&&0<c.length)for(var e=0;e<c.length;e++)if(c[e].name==d){c.splice(e,
-1);break}for(var f=mxUtils.clone(this.customFonts),e=0;e<f.length;e++)if(f[e].name==d){f.splice(e,1);break}c=new a(this.editorUi,c,f);this.editorUi.editor.graph.model.execute(c);this.editorUi.menubar.hideMenu();mxEvent.consume(b)})));k.firstChild.nextSibling.style.fontFamily=d}),e=0;e<this.defaultFonts.length;e++)d(this.defaultFonts[e]);b.addSeparator(c);var f=this.editorUi.editor.graph.extFonts;if(null!=f&&0<f.length){for(var g={},k=!1,e=0;e<this.customFonts.length;e++)g[this.customFonts[e].name]=
-!0;for(e=0;e<f.length;e++)g[f[e].name]||(this.customFonts.push(f[e]),k=!0);k&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts))}if(0<this.customFonts.length){for(e=0;e<this.customFonts.length;e++)f=this.customFonts[e].name,g=this.customFonts[e].url,d(f,g,!0),this.editorUi.editor.graph.addExtFont(f,g,!0);b.addSeparator(c);b.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var b=new a(this.editorUi,[],[]);this.editorUi.editor.graph.model.execute(b)}),
-c);b.addSeparator(c)}b.addItem(mxResources.get("custom")+"...",null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph,b=mxConstants.DEFAULT_FONTFAMILY,c="s",d=null,e=a.getView().getState(a.getSelectionCell());null!=e&&(b=e.style[mxConstants.STYLE_FONTFAMILY]||b,c=e.style.FType||c,"w"==c&&(d=this.editorUi.editor.graph.extFonts,e=null,null!=d&&(e=d.find(function(a){return a.name==b})),d=null!=e?e.url:mxResources.get("urlNofFound",null,"URL not found"),0==d.indexOf(PROXY_URL)&&(d=decodeURIComponent(d.substr((PROXY_URL+
-"?url=").length)))));c=new FontDialog(this.editorUi,b,d,c,mxUtils.bind(this,function(b,c,d){if(null!=b&&0<b.length){a.getModel().beginUpdate();try{a.stopEditing(!1);a.setCellStyles(mxConstants.STYLE_FONTFAMILY,b);"s"!=d&&(a.setCellStyles("FType",d),0==c.indexOf("http://")&&(c=PROXY_URL+"?url="+encodeURIComponent(c)),this.editorUi.editor.graph.addExtFont(b,c));d=!0;for(var e=0;e<this.customFonts.length;e++)if(this.customFonts[e].name==b){d=!1;break}d&&(this.customFonts.push({name:b,url:c}),this.editorUi.fireEvent(new mxEventObject("customFontsChanged",
-"customFonts",this.customFonts)))}finally{a.getModel().endUpdate()}}}));this.editorUi.showDialog(c.container,380,250,!0,!0);c.init()}),c,null,!0)})))}})();function DiagramPage(a,e){this.node=a;null!=e?this.node.setAttribute("id",e):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
+"...",function(){b.openLink("https://app.draw.io/")}));b.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){b.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var a=b.getCurrentFile();null!=a&&a.share()}catch(B){b.handleError(B)}}));this.put("embed",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();null==d||d.getMode()!=App.MODE_GOOGLE&&d.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(d.getTitle())||
+this.addMenuItems(a,["liveImage","-"],c);this.addMenuItems(a,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||b.isOffline()||this.addMenuItems(a,["embedIframe"],c);"1"==urlParams.embed||b.isOffline()||this.addMenuItems(a,"- googleDocs googleSlides googleSheets - microsoftOffice".split(" "),c)})));var v=function(a,c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!b.isOffline())&&a.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==e||"plantUml"==e||"mermaid"==
+e){var a=new ParseDialog(b,d,e);b.showDialog(a.container,620,420,!0,!1);b.dialog.container.style.overflow="auto"}else a=new CreateGraphDialog(b,d,e),b.showDialog(a.container,620,420,!0,!1);a.init()}),c,null,f())},x=function(a,c,d,e){var f=new mxCell(a,new mxGeometry(0,0,c,d),e);f.vertex=!0;a=k.getCenterInsertPoint(k.getBoundingBoxFromGeometry([f],!0));f.geometry.x=a.x;f.geometry.y=a.y;k.getModel().beginUpdate();try{f=k.addCell(f),k.fireEvent(new mxEventObject("cellsInserted","cells",[f]))}finally{k.getModel().endUpdate()}k.scrollCellToVisible(f);
+k.setSelectionCell(f);k.container.focus();k.editAfterInsert&&k.startEditing(f);window.setTimeout(function(){null!=b.hoverIcons&&b.hoverIcons.update(k.view.getState(f))},0);return f};b.actions.put("insertText",new Action(mxResources.get("text"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&k.startEditingAtCell(x("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=
+f;b.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&x("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=f;b.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&x("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=f;b.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),
+function(){k.isEnabled()&&!k.isCellLocked(k.getDefaultParent())&&x("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=f;var y=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):v(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),c);b.insertTemplateEnabled&&!b.isOffline()&&
+this.addMenuItems(a,["insertTemplate"],c);a.addSeparator(c);this.addSubmenu("insertLayout",a,c,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,c,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){y(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,c){y(a,c,["fromText","plantUml","mermaid","-","formatSql"]);a.addItem(mxResources.get("csv")+
+"...",null,function(){b.showImportCsvDialog()},c,null,f())})));this.put("openRecent",new Menu(function(a,c){var d=b.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&&(e="oneDrive");a.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){b.loadFile(d.id)},c)})(d[e]);a.addSeparator(c)}a.addItem(mxResources.get("reset"),null,function(){b.resetRecent()},c)}));this.put("openFrom",new Menu(function(a,c){null!=b.drive?
+a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.pickFile(App.MODE_GOOGLE)},c):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickFile(App.MODE_ONEDRIVE)},c):g&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,
+null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.pickFile(App.MODE_DROPBOX)},c):d&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickFile(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickFile(App.MODE_GITLAB)},c);null!=
+b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickFile(App.MODE_TRELLO)},c):m&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickFile(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickFile(App.MODE_DEVICE)},c);b.isOffline()||
+(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),function(a){null!=a&&0<a.length&&(null==b.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(a):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(a)))},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",
+new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},
+c):g&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):d&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+
+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},c):m&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);
+isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.pickLibrary(App.MODE_GOOGLE)},
+c):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickLibrary(App.MODE_ONEDRIVE)},c):g&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.pickLibrary(App.MODE_DROPBOX)},
+c):d&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickLibrary(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickLibrary(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickLibrary(App.MODE_TRELLO)},c):m&&"function"===
+typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickLibrary(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickLibrary(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),
+function(a){if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("loading"))){var c=a;b.editor.isCorsEnabledForUrl(a)||(c=PROXY_URL+"?url="+encodeURIComponent(a));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){b.spinner.stop();try{b.loadLibrary(new UrlLibrary(this,c.getText(),a))}catch(I){b.handleError(I,mxResources.get("errorLoadingFile"))}}else b.spinner.stop(),b.handleError(null,mxResources.get("errorLoadingFile"))},function(){b.spinner.stop();b.handleError(null,
+mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c));"1"==urlParams.confLib&&(a.addSeparator(c),a.addItem(mxResources.get("confluenceCloud")+"...",null,function(){b.showRemotelyStoredLibrary(mxResources.get("libraries"))},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["undo","redo","-","cut","copy"]);EditorUi.isElectronApp&&this.addMenuItems(a,["copyAsImage"]);this.addMenuItems(a,"paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));
+n=b.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(b,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("comments"));else{var a=!this.commentsWindow.window.isVisible();
+this.commentsWindow.window.setVisible(a);this.commentsWindow.refreshCommentsTime();a&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));b.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var n=this.get("viewPanels"),A=n.funct;n.funct=
+function(a,c){A.apply(this,arguments);b.commentsSupported()&&b.menus.addMenuItems(a,["comments"],c)};this.put("view",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers"]).concat(b.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(a,["-","search"],c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(a,"scratchpad",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,
+"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(a,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",a,c);this.addMenuItems(a,"- scrollbars tooltips ruler - grid guides".split(" "),c);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(a,"shadowVisible",c);this.addMenuItems(a,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),c)})));this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=
+urlParams.embed&&(this.addSubmenu("theme",a,c),a.addSeparator(c));if("undefined"!==typeof MathJax){var d=this.addMenuItem(a,"mathematicalTypesetting",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}this.addMenuItems(a,["copyConnect","collapseExpand","-"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(a,["showStartScreen"],c);"1"!=urlParams.embed&&this.addMenuItems(a,
+["autosave"],c);a.addSeparator(c);!b.isOfflineApp()&&isLocalStorage&&this.addMenuItem(a,"plugins",c);this.addMenuItems(a,["tags","-","editDiagram","-","configuration"],c);a.addSeparator(c);"1"==urlParams.newTempDlg&&(b.actions.addAction("templates",function(){var a=new TemplatesDialog;b.showDialog(a.container,a.width,a.height,!0,!1,null,!1,!0);a.init(b,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},
+{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123",title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},
+{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"},{url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},
+{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"}])},2E3)},null)}),this.addMenuItem(a,"templates",c))})));this.put("file",new Menu(mxUtils.bind(this,function(a,c){if("1"==urlParams.embed)this.addSubmenu("importFrom",a,c),this.addSubmenu("exportAs",a,c),this.addSubmenu("embed",a,c),"1"==urlParams.libraries&&(this.addMenuItems(a,["-"],c),this.addSubmenu("newLibrary",a,c),
+this.addSubmenu("openLibraryFrom",a,c)),b.isRevisionHistorySupported()&&this.addMenuItems(a,["-","revisionHistory"],c),this.addMenuItems(a,["-","pageSetup","print","-","rename"],c),"1"==urlParams.noSaveBtn?"0"!=urlParams.saveAndExit&&this.addMenuItems(a,["saveAndExit"],c):(this.addMenuItems(a,["save"],c),"1"==urlParams.saveAndExit&&this.addMenuItems(a,["saveAndExit"],c)),"1"!=urlParams.noExitBtn&&this.addMenuItems(a,["exit"],c);else{var d=this.editorUi.getCurrentFile();if(null!=d&&d.constructor==
+DriveFile){d.isRestricted()&&this.addMenuItems(a,["exportOptionsDisabled"],c);this.addMenuItems(a,["save","-","share"],c);var e=this.addMenuItem(a,"synchronize",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947");a.addSeparator(c)}else this.addMenuItems(a,["new"],c);this.addSubmenu("openFrom",a,c);isLocalStorage&&this.addSubmenu("openRecent",a,c);null!=d&&d.constructor==DriveFile?this.addMenuItems(a,
+["new","-","rename","makeCopy","moveToFolder"],c):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==d||d.constructor==LocalFile&&null==d.fileHandle||(a.addSeparator(c),e=this.addMenuItem(a,"synchronize",c),(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://desk.draw.io/support/solutions/articles/16000087947")),this.addMenuItems(a,["-","save","saveAs","-"],c),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=b.getServiceName()||b.isOfflineApp()||
+null==d||this.addMenuItems(a,["share","-"],c),this.addMenuItems(a,["rename"],c),b.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],c):(this.addMenuItems(a,["makeCopy"],c),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(a,["moveToFolder"],c)));a.addSeparator(c);this.addSubmenu("importFrom",a,c);this.addSubmenu("exportAs",a,c);a.addSeparator(c);this.addSubmenu("embed",a,c);this.addSubmenu("publish",a,c);a.addSeparator(c);this.addSubmenu("newLibrary",a,
+c);this.addSubmenu("openLibraryFrom",a,c);b.isRevisionHistorySupported()&&this.addMenuItems(a,["-","revisionHistory"],c);null!=d&&null!=b.fileNode&&(d=null!=d.getTitle()?d.getTitle():b.defaultFilename,/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||this.addMenuItems(a,["-","properties"]));this.addMenuItems(a,["-","pageSetup"],c);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["print"],c);this.addMenuItems(a,["-","close"])}})));a.prototype.execute=function(){var a=this.ui.editor.graph;this.customFonts=
+this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));this.extFonts=this.previousExtFonts;for(var b=a.extFonts,c=0;null!=b&&c<b.length;c++){var d=document.getElementById("extFont_"+b[c].name);null!=d&&d.parentNode.removeChild(d)}a.extFonts=[];for(c=0;null!=this.previousExtFonts&&c<this.previousExtFonts.length;c++)this.ui.editor.graph.addExtFont(this.previousExtFonts[c].name,this.previousExtFonts[c].url);
+this.previousExtFonts=b};this.put("fontFamily",new Menu(mxUtils.bind(this,function(b,c){for(var d=mxUtils.bind(this,function(d,e,f){var g=this.editorUi.editor.graph,k=this.styleChange(b,d,[mxConstants.STYLE_FONTFAMILY],[d],null,c,function(){document.execCommand("fontname",!1,d);g.addExtFont(d,e)},function(){g.updateLabelElements(g.getSelectionCells(),function(a){a.removeAttribute("face");a.style.fontFamily=null;"PRE"==a.nodeName&&g.replaceElement(a,"div")});g.addExtFont(d,e)});f&&(f=document.createElement("span"),
+f.className="geSprite geSprite-delete",f.style.cursor="pointer",f.style.display="inline-block",k.firstChild.nextSibling.nextSibling.appendChild(f),mxEvent.addListener(f,mxClient.IS_POINTER?"pointerup":"mouseup",mxUtils.bind(this,function(b){var c=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=c&&0<c.length)for(var e=0;e<c.length;e++)if(c[e].name==d){c.splice(e,1);break}for(var f=mxUtils.clone(this.customFonts),e=0;e<f.length;e++)if(f[e].name==d){f.splice(e,1);break}c=new a(this.editorUi,
+c,f);this.editorUi.editor.graph.model.execute(c);this.editorUi.menubar.hideMenu();mxEvent.consume(b)})));k.firstChild.nextSibling.style.fontFamily=d}),e=0;e<this.defaultFonts.length;e++)d(this.defaultFonts[e]);b.addSeparator(c);var f=this.editorUi.editor.graph.extFonts;if(null!=f&&0<f.length){for(var g={},k=!1,e=0;e<this.customFonts.length;e++)g[this.customFonts[e].name]=!0;for(e=0;e<f.length;e++)g[f[e].name]||(this.customFonts.push(f[e]),k=!0);k&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged",
+"customFonts",this.customFonts))}if(0<this.customFonts.length){for(e=0;e<this.customFonts.length;e++)f=this.customFonts[e].name,g=this.customFonts[e].url,d(f,g,!0),this.editorUi.editor.graph.addExtFont(f,g,!0);b.addSeparator(c);b.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var b=new a(this.editorUi,[],[]);this.editorUi.editor.graph.model.execute(b)}),c);b.addSeparator(c)}b.addItem(mxResources.get("custom")+"...",null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph,
+b=mxConstants.DEFAULT_FONTFAMILY,c="s",d=null,e=a.getView().getState(a.getSelectionCell());null!=e&&(b=e.style[mxConstants.STYLE_FONTFAMILY]||b,c=e.style.FType||c,"w"==c&&(d=this.editorUi.editor.graph.extFonts,e=null,null!=d&&(e=d.find(function(a){return a.name==b})),d=null!=e?e.url:mxResources.get("urlNofFound",null,"URL not found"),0==d.indexOf(PROXY_URL)&&(d=decodeURIComponent(d.substr((PROXY_URL+"?url=").length)))));c=new FontDialog(this.editorUi,b,d,c,mxUtils.bind(this,function(b,c,d){if(null!=
+b&&0<b.length){a.getModel().beginUpdate();try{a.stopEditing(!1);a.setCellStyles(mxConstants.STYLE_FONTFAMILY,b);"s"!=d&&(a.setCellStyles("FType",d),0==c.indexOf("http://")&&(c=PROXY_URL+"?url="+encodeURIComponent(c)),this.editorUi.editor.graph.addExtFont(b,c));d=!0;for(var e=0;e<this.customFonts.length;e++)if(this.customFonts[e].name==b){d=!1;break}d&&(this.customFonts.push({name:b,url:c}),this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts)))}finally{a.getModel().endUpdate()}}}));
+this.editorUi.showDialog(c.container,380,250,!0,!0);c.init()}),c,null,!0)})))}})();function DiagramPage(a,e){this.node=a;null!=e?this.node.setAttribute("id",e):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};function RenamePage(a,e,c){this.ui=a;this.page=e;this.previous=this.name=c}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(a,e,c){this.ui=a;this.oldIndex=e;this.newIndex=c}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(a,e,c){this.ui=a;this.previousPage=this.page=e;this.neverShown=!0;null!=e&&(this.neverShown=null==e.viewState,this.ui.updatePageRoot(e),null!=c&&(e.viewState=c,this.neverShown=!1))}
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index 72bf203e..4c5a6fac 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -5317,7 +5317,9 @@ App.prototype.updateButtonContainer = function()
}
// Share
- if (file != null && file.constructor == DriveFile)
+ if (urlParams['embed'] != '1' && this.getServiceName() == 'draw.io' &&
+ !mxClient.IS_CHROMEAPP && !EditorUi.isElectronApp &&
+ !this.isOfflineApp() && file != null)
{
if (this.shareButton == null)
{
diff --git a/src/main/webapp/js/diagramly/Dialogs.js b/src/main/webapp/js/diagramly/Dialogs.js
index 7f824ea1..3ea34553 100644
--- a/src/main/webapp/js/diagramly/Dialogs.js
+++ b/src/main/webapp/js/diagramly/Dialogs.js
@@ -744,6 +744,7 @@ var SplashDialog = function(editorUi)
var link = document.createElement('a');
link.style.display = 'inline-block';
+ link.style.color = 'gray';
link.style.cursor = 'pointer';
link.style.marginTop = '6px';
mxUtils.write(link, mxResources.get('signOut'));
@@ -872,6 +873,7 @@ var SplashDialog = function(editorUi)
mxUtils.br(buttons);
var link = document.createElement('a');
link.style.display = 'inline-block';
+ link.style.color = 'gray';
link.style.cursor = 'pointer';
link.style.marginTop = '8px';
mxUtils.write(link, mxResources.get('changeStorage'));
@@ -8763,7 +8765,7 @@ var LibraryDialog = function(editorUi, name, library, initialImages, file, mode)
if (editorUi.isLocalFileSave())
{
- editorUi.saveLocalFile(data, filename, 'text/xml', null, null, true);
+ editorUi.saveLocalFile(data, filename, 'text/xml', null, null, true, null, 'xml');
}
else
{
diff --git a/src/main/webapp/js/diagramly/DrawioFile.js b/src/main/webapp/js/diagramly/DrawioFile.js
index 017268b5..467d0d55 100644
--- a/src/main/webapp/js/diagramly/DrawioFile.js
+++ b/src/main/webapp/js/diagramly/DrawioFile.js
@@ -1018,6 +1018,17 @@ DrawioFile.prototype.isTrashed = function()
DrawioFile.prototype.move = function(folderId, success, error) { };
/**
+ * Translates this point by the given vector.
+ *
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+DrawioFile.prototype.share = function()
+{
+ this.ui.alert(mxResources.get('sharingAvailable'), null, 380);
+};
+
+/**
* Returns the hash of the file which consists of a prefix for the storage
* type and the ID of the file.
*/
@@ -1482,8 +1493,8 @@ DrawioFile.prototype.addUnsavedStatus = function(err)
var status = mxUtils.htmlEntities(mxResources.get('unsavedChangesClickHereToSave')) +
((msg != null && msg != '') ? ' (' + mxUtils.htmlEntities(msg) + ')' : '');
this.ui.editor.setStatus('<div title="'+ status +
- '" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">' +
- status + '</div>');
+ '" class="geStatusAlertOrange" style="cursor:pointer;overflow:hidden;">' + status + ' <img src="' +
+ Editor.saveImage + '" align="top" style="width:16px;margin-top:-2px"/></div>');
// Installs click handler for saving
var links = this.ui.statusContainer.getElementsByTagName('div');
@@ -1946,7 +1957,7 @@ DrawioFile.prototype.fileChanged = function()
/**
* Creates a secret and token pair for writing a patch to the cache.
*/
-DrawioFile.prototype.createSecret = function(success, error)
+DrawioFile.prototype.createSecret = function(success)
{
var secret = Editor.guid(32);
@@ -1955,7 +1966,10 @@ DrawioFile.prototype.createSecret = function(success, error)
this.sync.createToken(secret, mxUtils.bind(this, function(token)
{
success(secret, token);
- }), error);
+ }), mxUtils.bind(this, function()
+ {
+ success(secret);
+ }));
}
else
{
diff --git a/src/main/webapp/js/diagramly/DrawioFileSync.js b/src/main/webapp/js/diagramly/DrawioFileSync.js
index e50b5839..afa8e9eb 100644
--- a/src/main/webapp/js/diagramly/DrawioFileSync.js
+++ b/src/main/webapp/js/diagramly/DrawioFileSync.js
@@ -848,7 +848,7 @@ DrawioFileSync.prototype.catchup = function(desc, success, error, abort)
}
// Retries if cache entry was not yet there
else if (cacheReadyRetryCount <= this.maxCacheReadyRetries - 1 &&
- !failed && req.getStatus() != 401)
+ !failed && req.getStatus() != 401 && req.getStatus() != 503)
{
cacheReadyRetryCount++;
this.file.stats.cacheMiss++;
diff --git a/src/main/webapp/js/diagramly/DriveFile.js b/src/main/webapp/js/diagramly/DriveFile.js
index 0a0f3a10..90874333 100644
--- a/src/main/webapp/js/diagramly/DriveFile.js
+++ b/src/main/webapp/js/diagramly/DriveFile.js
@@ -217,15 +217,22 @@ DriveFile.prototype.saveFile = function(title, revision, success, error, unloadi
// Shows possible errors but keeps the modified flag as the
// file was saved but the cache entry could not be written
- this.fileSaved(savedData, lastDesc, mxUtils.bind(this, function()
+ if (token != null)
{
- this.contentChanged();
-
- if (success != null)
+ this.fileSaved(savedData, lastDesc, mxUtils.bind(this, function()
{
- success(resp);
- }
- }), error, token);
+ this.contentChanged();
+
+ if (success != null)
+ {
+ success(resp);
+ }
+ }), error, token);
+ }
+ else
+ {
+ success(resp);
+ }
}
else if (error != null)
{
@@ -319,18 +326,6 @@ DriveFile.prototype.saveFile = function(title, revision, success, error, unloadi
});
doSave(overwrite, revision);
- }), mxUtils.bind(this, function(e)
- {
- this.savingFile = false;
-
- if (error != null)
- {
- error(e);
- }
- else
- {
- throw e;
- }
}));
}
}
@@ -487,6 +482,17 @@ DriveFile.prototype.move = function(folderId, success, error)
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
+DriveFile.prototype.share = function()
+{
+ this.ui.drive.showPermissions(this.getId());
+};
+
+/**
+ * Translates this point by the given vector.
+ *
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
DriveFile.prototype.getTitle = function()
{
return this.desc.title;
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index 92c9b3e2..34108518 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -62,6 +62,11 @@
{commonStyle: {fontColor: '#E4FDE1', strokeColor: '#028090', fillColor: '#F45B69'},
graph: {background: '#114B5F', gridColor: '#0B3240'}}
];
+
+ /**
+ *
+ */
+ Editor.saveImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkgMTJ2N0g1di03SDN2N2MwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0yem0tNiAuNjdsMi41OS0yLjU4TDE3IDExLjVsLTUgNS01LTUgMS40MS0xLjQxTDExIDEyLjY3VjNoMnoiLz48L3N2Zz4=';
/**
* Used in the GraphViewer lightbox.
diff --git a/src/main/webapp/js/diagramly/EditorUi.js b/src/main/webapp/js/diagramly/EditorUi.js
index 013e92a7..b87ff4f7 100644
--- a/src/main/webapp/js/diagramly/EditorUi.js
+++ b/src/main/webapp/js/diagramly/EditorUi.js
@@ -3874,10 +3874,10 @@
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
- EditorUi.prototype.alert = function(msg, fn)
+ EditorUi.prototype.alert = function(msg, fn, optionalWidth)
{
var dlg = new ErrorDialog(this, null, msg, mxResources.get('ok'), fn);
- this.showDialog(dlg.container, 340, 100, true, false);
+ this.showDialog(dlg.container, optionalWidth || 340, 100, true, false);
dlg.init();
};
@@ -4137,7 +4137,7 @@
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
- EditorUi.prototype.doSaveLocalFile = function(data, filename, mimeType, base64Encoded, format)
+ EditorUi.prototype.doSaveLocalFile = function(data, filename, mimeType, base64Encoded, format, defaultExtension)
{
// Appends .drawio extension for XML files with no extension
// to avoid the browser to automatically append .xml instead
@@ -4145,7 +4145,8 @@
!/(\.drawio)$/i.test(filename) &&
!/(\.xml)$/i.test(filename))
{
- filename = filename + '.drawio';
+ defaultExtension = (defaultExtension != null) ? defaultExtension : 'drawio';
+ filename = filename + '.' + defaultExtension;
}
// Newer versions of IE
@@ -4304,7 +4305,7 @@
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
- EditorUi.prototype.saveLocalFile = function(data, filename, mimeType, base64Encoded, format, allowBrowser, allowTab)
+ EditorUi.prototype.saveLocalFile = function(data, filename, mimeType, base64Encoded, format, allowBrowser, allowTab, defaultExtension)
{
allowBrowser = (allowBrowser != null) ? allowBrowser : false;
allowTab = (allowTab != null) ? allowTab : (format != 'vsdx') && (!mxClient.IS_IOS || !navigator.standalone);
@@ -4345,7 +4346,7 @@
}
else if (mode == App.MODE_DEVICE || mode == 'download')
{
- this.doSaveLocalFile(data, newTitle, mimeType, base64Encoded);
+ this.doSaveLocalFile(data, newTitle, mimeType, base64Encoded, null, defaultExtension);
}
else if (newTitle != null && newTitle.length > 0)
{
diff --git a/src/main/webapp/js/diagramly/Extensions.js b/src/main/webapp/js/diagramly/Extensions.js
index 2d893e85..2a281124 100644
--- a/src/main/webapp/js/diagramly/Extensions.js
+++ b/src/main/webapp/js/diagramly/Extensions.js
@@ -5137,7 +5137,7 @@ LucidImporter = {};
if (p.Shape != 'diagonal')
{
- if (p.ElbowPoints != null)
+ if (p.ElbowPoints != null && p.ElbowPoints.length > 0)
{
cell.geometry.points = [];
@@ -5200,7 +5200,7 @@ LucidImporter = {};
}
}
- var waypoints = p.ElbowControlPoints || p.Joints;
+ var waypoints = p.ElbowControlPoints || p.BezierJoints || p.Joints;
if (waypoints != null)
{
@@ -5208,7 +5208,7 @@ LucidImporter = {};
for (var i = 0; i < waypoints.length; i++)
{
- var pt = waypoints[i];
+ var pt = waypoints[i].p ? waypoints[i].p : waypoints[i];
cell.geometry.points.push(new mxPoint(
Math.round(pt.x * scale + dx),
diff --git a/src/main/webapp/js/diagramly/GitHubFile.js b/src/main/webapp/js/diagramly/GitHubFile.js
index 91b18e73..ae8a7793 100644
--- a/src/main/webapp/js/diagramly/GitHubFile.js
+++ b/src/main/webapp/js/diagramly/GitHubFile.js
@@ -19,6 +19,19 @@ mxUtils.extend(GitHubFile, DrawioFile);
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
+GitHubFile.prototype.share = function()
+{
+ this.ui.editor.graph.openLink('https://github.com/' +
+ encodeURIComponent(this.meta.org) + '/' +
+ encodeURIComponent(this.meta.repo) +'/settings/access');
+};
+
+/**
+ * Translates this point by the given vector.
+ *
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
GitHubFile.prototype.getId = function()
{
return encodeURIComponent(this.meta.org) + '/' +
diff --git a/src/main/webapp/js/diagramly/GitLabFile.js b/src/main/webapp/js/diagramly/GitLabFile.js
index f6ed68dc..c9bbfdec 100644
--- a/src/main/webapp/js/diagramly/GitLabFile.js
+++ b/src/main/webapp/js/diagramly/GitLabFile.js
@@ -18,6 +18,19 @@ mxUtils.extend(GitLabFile, GitHubFile);
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
+GitLabFile.prototype.share = function()
+{
+ this.ui.editor.graph.openLink('https://gitlab.com/' +
+ encodeURIComponent(this.meta.org) + '/' +
+ encodeURIComponent(this.meta.repo) +'/-/project_members');
+};
+
+/**
+ * Translates this point by the given vector.
+ *
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
GitLabFile.prototype.getId = function()
{
return this.meta.org + '/' +
diff --git a/src/main/webapp/js/diagramly/Menus.js b/src/main/webapp/js/diagramly/Menus.js
index 38f9cbfa..aa866b44 100644
--- a/src/main/webapp/js/diagramly/Menus.js
+++ b/src/main/webapp/js/diagramly/Menus.js
@@ -2572,7 +2572,7 @@
if (file != null)
{
- editorUi.drive.showPermissions(file.getId());
+ file.share();
}
}
catch (e)
@@ -3479,10 +3479,17 @@
}
}
- this.addMenuItems(menu, ['-', 'save', 'saveAs'], parent);
+ this.addMenuItems(menu, ['-', 'save', 'saveAs', '-'], parent);
+
+ if (!mxClient.IS_CHROMEAPP && !EditorUi.isElectronApp &&
+ editorUi.getServiceName() == 'draw.io' &&
+ !editorUi.isOfflineApp() && file != null)
+ {
+ this.addMenuItems(menu, ['share', '-'], parent);
+ }
+
+ this.addMenuItems(menu, ['rename'], parent);
- this.addMenuItems(menu, ['-', 'rename'], parent);
-
if (editorUi.isOfflineApp())
{
if (navigator.onLine && urlParams['stealth'] != '1')
diff --git a/src/main/webapp/js/diagramly/OneDriveFile.js b/src/main/webapp/js/diagramly/OneDriveFile.js
index e38fea8a..263b6ac3 100644
--- a/src/main/webapp/js/diagramly/OneDriveFile.js
+++ b/src/main/webapp/js/diagramly/OneDriveFile.js
@@ -6,6 +6,8 @@ OneDriveFile = function(ui, data, meta)
{
DrawioFile.call(this, ui, data);
+ console.log('meta', meta);
+
this.meta = meta;
};
@@ -18,6 +20,66 @@ mxUtils.extend(OneDriveFile, DrawioFile);
* @param {number} dx X-coordinate of the translation.
* @param {number} dy Y-coordinate of the translation.
*/
+OneDriveFile.prototype.share = function()
+{
+ var url = this.meta.webUrl;
+ url = url.substring(0, url.lastIndexOf('/'));
+
+ if (this.meta.parentReference != null)
+ {
+ try
+ {
+ // Best effort guessing of the web interface URL for the file
+ if (this.meta.parentReference.driveType == 'personal')
+ {
+ url = 'https://onedrive.live.com/?cid=' + encodeURIComponent(this.meta.parentReference.driveId) +
+ '&id=' + encodeURIComponent(this.meta.id);
+ }
+ else if (this.meta.parentReference.driveType == 'documentLibrary')
+ {
+ var path = this.meta.parentReference.path;
+ path = path.substring(path.indexOf('/root:') + 6);
+
+ var id = this.meta.webUrl;
+ var url = id.substring(0, id.length - path.length - this.meta.name.length - ((path.length > 0) ? 1 : 0));
+ id = id.substring(id.indexOf('/', 8));
+
+ url = url + '/Forms/AllItems.aspx?id=' + id + '&parent=' + id.substring(0, id.lastIndexOf('/'));
+ }
+ else if (this.meta.parentReference.driveType == 'business')
+ {
+ var url = this.meta['@microsoft.graph.downloadUrl'];
+ var idx = url.indexOf('/_layouts/15/download.aspx?');
+
+ // Strips protocol
+ var id = this.meta.webUrl;
+ var parent = id;
+
+ id = id.substring(8);
+
+ // Gets path and parent path
+ id = id.substring(id.indexOf('/'));
+ parent = parent.substring(0, parent.lastIndexOf('/'));
+ parent = parent.substring(parent.indexOf('/', 8))
+
+ url = url.substring(0, idx) + '/_layouts/15/onedrive.aspx?id=' + id + '&parent=' + parent;
+ }
+ }
+ catch (e)
+ {
+ // ignore
+ }
+ }
+
+ this.ui.editor.graph.openLink(url);
+};
+
+/**
+ * Translates this point by the given vector.
+ *
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
OneDriveFile.prototype.getId = function()
{
return this.getIdOf(this.meta);
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-MSCAE.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-MSCAE.js
index b27843d3..75612f97 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-MSCAE.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-MSCAE.js
@@ -1391,7 +1391,7 @@
this.createVertexTemplateEntry(s + 'AzureFXTEdgeFiler.svg;',
r * 0.5, r * 0.5, '', 'AzureFXTEdgeFiler', null, null, this.getTagsForStencil(gn, 'azurefxtedgefiler', dt).join(' ')),
this.createVertexTemplateEntry(s + 'Blog_Storage.svg;',
- r * 0.5, r * 0.46, '', 'Blog Storage', null, null, this.getTagsForStencil(gn, 'blog storage', dt).join(' ')),
+ r * 0.5, r * 0.46, '', 'Blob Storage', null, null, this.getTagsForStencil(gn, 'blob storage', dt).join(' ')),
this.createVertexTemplateEntry(s + 'Data_Box_Edge_Data_Box_Gateway.svg;',
r * 0.5, r * 0.32, '', 'Data Box Edge - Data Box Gateway', null, null, this.getTagsForStencil(gn, 'data box edge data gateway', dt).join(' ')),
this.createVertexTemplateEntry(s + 'Data_Box.svg;',
diff --git a/src/main/webapp/js/extensions.min.js b/src/main/webapp/js/extensions.min.js
index a4c7b03a..9c0dac46 100644
--- a/src/main/webapp/js/extensions.min.js
+++ b/src/main/webapp/js/extensions.min.js
@@ -4,245 +4,246 @@ LucidImporter={};
c+";"));if(a.b&&a.b.v||a.fc&&a.fc.v&&0==a.fc.v.indexOf("Bold"))d+="font-weight: bold;";a.i&&a.i.v&&(d+="font-style: italic;");a.u&&a.u.v&&(d+="text-decoration: underline;");p||(d+="text-align: "+(a.a?a.a.v:"center")+";");a.il&&(d+="margin-left: "+Math.round(.6*a.il.v-(p?21:0))+"px;");a.ir&&(d+="margin-right: "+Math.round(.6*a.ir.v)+"px;");a.mt&&(d+="margin-top: "+Math.round(.6*a.mt.v)+"px;");a.mb&&(d+="margin-bottom: "+Math.round(.6*a.mb.v)+"px;");d+='">';A.push(n);return d}function k(a,b,d,k){a=
a?a.substring(b,d):"";"\n"==a&&(a="");a=a.replace(/</g,"&lt;").replace(/>/g,"&gt;");do for(b=A.pop(),d=0;d<b;d++){var n=g.pop();"li"==n&&(nb=!1);a+="</"+n+">"}while(k&&0<g.length);return a}for(var n=[],c=-1,f="";-1<(c=a.indexOf("\n",c+1));)n.push(c+1);b.sort(function(a,b){return a.s-b.s});for(var w={},c=[],l=0;l<b.length;l++){var y=b[l];if(null==w[y.s]){for(var z=0;z<n.length;z++)if(n[z]>y.s){w[y.s]=n[z];break}null==w[y.s]&&(w[y.s]=a.length)}null==y.e&&(y.e=w[y.s]);c.push(y)}c.sort(function(a,b){return a.e-
b.e});for(var z=l=0,n={},g=[],A=[],p=!1,e,nb=!1,y=w=0;l>=z&&(l<b.length||z<c.length);){var B=b[l],C=c[z];if(B&&C&&B.s<C.e){w=B.s;C=!1;for(0<w-y&&(f+=d(n,C)+k(a,y,w));null!=B&&B.s==w;){if("a"==B.n||"il"==B.n||"ir"==B.n||"mt"==B.n||"mb"==B.n||"t"==B.n)C=!0;n[B.n]=B;B=b[++l]}f+=d(n,C)}else if(C){y=C.e;do delete n[C.n],C=c[++z];while(null!=C&&C.e==y);f+=k(a,w,y);w=y}}return f+=k(null,null,null,!0)}function g(a){x=!1;var b=null!=a.Text?a.Text:null!=a.Value?a.Value:a.Lane_0;null==b&&null!=a.State?null!=
-a.State.t&&(b=a.State):null==b&&null!=a.Note?null!=a.Note.t&&(b=a.Note):null==b&&null!=a.Title?null!=a.Title.t&&(b=a.Title):null!=a.t&&(b=a);null==b&&null!=a.TextAreas?null!=a.TextAreas.Text&&null!=a.TextAreas.Text.Value&&null!=a.TextAreas.Text.Value.t&&(b=a.TextAreas.Text.Value):null==b&&null!=a.t0&&null!=a.t0.t&&(b=a.t0);if(null!=b){if(null!=b.t){a=b.t;b=b.m;try{for(var d=0;d<b.length;d++)if(0<b[d].s){x=!0;break}if(x)return f(a,b)}catch(da){console.log(da)}a=a.replace(/</g,"&lt;");return a=a.replace(/>/g,
+a.State.t&&(b=a.State):null==b&&null!=a.Note?null!=a.Note.t&&(b=a.Note):null==b&&null!=a.Title?null!=a.Title.t&&(b=a.Title):null!=a.t&&(b=a);null==b&&null!=a.TextAreas?null!=a.TextAreas.Text&&null!=a.TextAreas.Text.Value&&null!=a.TextAreas.Text.Value.t&&(b=a.TextAreas.Text.Value):null==b&&null!=a.t0&&null!=a.t0.t&&(b=a.t0);if(null!=b){if(null!=b.t){a=b.t;b=b.m;try{for(var d=0;d<b.length;d++)if(0<b[d].s){x=!0;break}if(x)return f(a,b)}catch(ca){console.log(ca)}a=a.replace(/</g,"&lt;");return a=a.replace(/>/g,
"&gt;")}if(null!=b.Value&&null!=b.Value.t)return b.Value.t=b.Value.t.replace(/</g,"&lt;"),b.Value.t=b.Value.t.replace(/>/g,"&gt;"),b.Value.t}return""}function p(a){return null!=a.Action?a.Action:a}function e(a){if(null!=a.Text){if(null!=a.Text.m)return a.Text.m}else if(null!=a.TextAreas){if(null!=a.TextAreas.Text&&null!=a.TextAreas.Text.Value&&null!=a.TextAreas.Text.Value.m)return a.TextAreas.Text.Value.m}else{if(null!=a.m)return a.m;if(null!=a.Title&&null!=a.Title.m)return a.Title.m}return null}
function l(b,n){return(n?"overflow=width;html=1;":a(b)+d(b)+k(b)+w(b)+y(b)+z(b)+A(b)+B(b))+C(b)+E(b)}function c(a,d,k,n,c){var h="";null!=a&&""!=a&&";"!=a.charAt(a.length-1)&&(h=";");return h+=(c?"overflow=width;html=1;":b(mxConstants.STYLE_FONTSIZE,a,d,k,n)+b(mxConstants.STYLE_FONTCOLOR,a,d,k,n)+b(mxConstants.STYLE_FONTSTYLE,a,d,k,n)+b(mxConstants.STYLE_ALIGN,a,d,k,n)+b(mxConstants.STYLE_SPACING_LEFT,a,d,k,n)+b(mxConstants.STYLE_SPACING_RIGHT,a,d,k,n)+b(mxConstants.STYLE_SPACING_TOP,a,d,k,n)+b(mxConstants.STYLE_SPACING_BOTTOM,
a,d,k,n))+b(mxConstants.STYLE_SPACING,a,d,k,n)+b(mxConstants.STYLE_VERTICAL_ALIGN,a,d,k,n)+b(mxConstants.STYLE_STROKECOLOR,a,d,k,n)+b(mxConstants.STYLE_OPACITY,a,d,k,n)+b(mxConstants.STYLE_ROUNDED,a,d,k,n)+b(mxConstants.STYLE_ROTATION,a,d,k,n)+b(mxConstants.STYLE_FLIPH,a,d,k,n)+b(mxConstants.STYLE_FLIPV,a,d,k,n)+b(mxConstants.STYLE_SHADOW,a,d,k,n)+b(mxConstants.STYLE_FILLCOLOR,a,d,k,n)+b(mxConstants.STYLE_DASHED,a,d,k,n)+b(mxConstants.STYLE_STROKEWIDTH,a,d,k,n)+b(mxConstants.STYLE_IMAGE,a,d,k,n)}
function b(b,n,c,f,h){a:{if(null!=n&&null!=b){if(n.includes(";"+b+"=")){n=!0;break a}if(n.substring(0,b.length+1)==b+"="){n=!0;break a}}n=!1}if(!n)switch(b){case mxConstants.STYLE_FONTSIZE:return a(c);case mxConstants.STYLE_FONTCOLOR:return d(c);case mxConstants.STYLE_FONTSTYLE:return k(c);case mxConstants.STYLE_ALIGN:return w(c);case mxConstants.STYLE_SPACING_LEFT:return y(c);case mxConstants.STYLE_SPACING_RIGHT:return z(c);case mxConstants.STYLE_SPACING_TOP:return A(c);case mxConstants.STYLE_SPACING_BOTTOM:return B(c);
case mxConstants.STYLE_SPACING:return C(c);case mxConstants.STYLE_VERTICAL_ALIGN:return E(c);case mxConstants.STYLE_STROKECOLOR:return D(c,f);case mxConstants.STYLE_OPACITY:return M(c,f,h);case mxConstants.STYLE_ROUNDED:return f=!h.edge&&!h.style.includes("rounded")&&null!=c.Rounding&&0<c.Rounding?"rounded=1;absoluteArcSize=1;arcSize="+.6*c.Rounding+";":"",f;case mxConstants.STYLE_ROTATION:return b="",null!=c.Rotation&&(c=mxUtils.toDegree(parseFloat(c.Rotation)),n=!0,0!=c&&("UMLSwimLaneBlockV2"==
-f.Class||(0<=f.Class.indexOf("Rotated")||-90==c||270==c)&&(0<=f.Class.indexOf("Pool")||0<=f.Class.indexOf("SwimLane")))?(c+=90,h.geometry.rotate90(),n=!1):0<=mxUtils.indexOf(Qc,f.Class)?(c-=90,h.geometry.rotate90()):0<=mxUtils.indexOf(Rc,f.Class)&&(c+=180),0!=c&&(b+="rotation="+c+";"),n||(b+="horizontal=0;")),b;case mxConstants.STYLE_FLIPH:return f=c.FlipX?"flipH=1;":"",f;case mxConstants.STYLE_FLIPV:return f=c.FlipY?"flipV=1;":"",f;case mxConstants.STYLE_SHADOW:return X(c);case mxConstants.STYLE_FILLCOLOR:return O(c,
-f);case mxConstants.STYLE_DASHED:return na(c);case mxConstants.STYLE_STROKEWIDTH:return ja(c);case mxConstants.STYLE_IMAGE:return f="ImageSearchBlock2"==f.Class?"image="+c.URL+";":"UserImage2Block"==f.Class&&null!=c.ImageFillProps&&null!=c.ImageFillProps.url?"image="+c.ImageFillProps.url+";":"",f}return""}function a(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("s"==d.n&&null!=d.v)return"fontSize="+Math.round(.6*d.v)+";";b++}return"fontSize=11;"}function d(a){a=e(a);if(null!=a)for(var b=
-0;b<a.length;){var d=a[b];if("c"==d.n&&null!=d.v)return a=d.v,"#"!=a.charAt(0)&&(a="#"+a),a=a.substring(0,7),mxConstants.STYLE_FONTCOLOR+"="+a+";";b++}return""}function k(a){return n(e(a))}function n(a){if(null!=a){var b=0,d=!1;if(null!=a)for(var k=0;!d&&k<a.length;){var n=a[k];"b"==n.n?null!=n.v&&n.v&&(d=!0,b+=1):"fc"==n.n&&"Bold"==n.v&&(d=!0,b+=1);k++}d=!1;if(null!=a)for(k=0;!d&&k<a.length;)n=a[k],"i"==n.n&&null!=n.v&&n.v&&(d=!0,b+=2),k++;d=!1;if(null!=a)for(k=0;!d&&k<a.length;)n=a[k],"u"==n.n&&
-null!=n.v&&n.v&&(d=!0,b+=4),k++;if(0<b)return"fontStyle="+b+";"}return""}function w(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("a"==d.n&&null!=d.v)return"align="+d.v+";";b++}return""}function y(a){var b=e(a);if(null!=b)for(var d=0;d<b.length;){var k=b[d];if(null!=k.v){if("il"==k.n)return"spacingLeft="+.6*k.v+";";w(a)}d++}return""}function z(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("ir"==d.n&&null!=d.v)return"spacingRight="+d.v+";";b++}return""}function A(a){a=e(a);
-if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("mt"==d.n&&null!=d.v)return"spacingTop="+d.v+";";b++}return""}function B(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("mb"==d.n&&null!=d.v)return"spacingBottom="+d.v+";";b++}return""}function C(a){return"number"===typeof a.InsetMargin?"spacing="+Math.max(0,Math.round(.6*parseInt(a.InsetMargin)))+";":""}function E(a){return null!=a.Text_VAlign&&"string"===typeof a.Text_VAlign?"verticalAlign="+a.Text_VAlign+";":null!=a.Title_VAlign&&"string"===
-typeof a.Title_VAlign?"verticalAlign="+a.Title_VAlign+";":Va(mxConstants.STYLE_VERTICAL_ALIGN,a.TextVAlign,"middle")}function D(a,b){return 0==a.LineWidth?mxConstants.STYLE_STROKECOLOR+"=none;":Va(mxConstants.STYLE_STROKECOLOR,ba(a.LineColor),"#000000")}function G(a){return null!=a?mxConstants.STYLE_FILLCOLOR+"="+ba(a)+";":""}function T(a){return null!=a?"swimlaneFillColor="+ba(a)+";":""}function M(a,b,d){b="";if("string"===typeof a.LineColor&&7<a.LineColor.length){var k="0x"+a.LineColor.substring(a.LineColor.length-
-2,a.LineColor.length);d.style.includes("strokeOpacity")||(b+="strokeOpacity="+Math.round(parseInt(k)/2.55)+";")}"string"===typeof a.FillColor&&7<a.FillColor.length&&(a="0x"+a.FillColor.substring(a.FillColor.length-2,a.FillColor.length),d.style.includes("fillOpacity")||(b+="fillOpacity="+Math.round(parseInt(a)/2.55)+";"));return b}function X(a){return null!=a.Shadow?mxConstants.STYLE_SHADOW+"=1;":""}function ba(a){return a?a.substring(0,7):null}function ga(a,b){return a&&7<a.length?b+"="+Math.round(parseInt("0x"+
-a.substr(7))/2.55)+";":""}function O(a,b){if(null!=a.FillColor)if("object"===typeof a.FillColor){if(null!=a.FillColor.cs&&1<a.FillColor.cs.length)return Va(mxConstants.STYLE_FILLCOLOR,ba(a.FillColor.cs[0].c))+Va(mxConstants.STYLE_GRADIENTCOLOR,ba(a.FillColor.cs[1].c))}else return"string"===typeof a.FillColor?Va(mxConstants.STYLE_FILLCOLOR,ba(a.FillColor),"#FFFFFF"):Va(mxConstants.STYLE_FILLCOLOR,"none");return""}function na(a){return"dotted"==a.StrokeStyle?"dashed=1;dashPattern=1 4;":"dashdot"==a.StrokeStyle?
-"dashed=1;dashPattern=10 5 1 5;":"dotdotdot"==a.StrokeStyle?"dashed=1;dashPattern=1 2;":"longdash"==a.StrokeStyle?"dashed=1;dashPattern=16 6;":null!=a.StrokeStyle&&"dashed"==a.StrokeStyle.substring(0,6)?"dashed=1;":""}function ja(a){return Va(mxConstants.STYLE_STROKEWIDTH,Math.round(.6*parseFloat(a.LineWidth)),"1")}function Z(a,b,d,k){for(var n=b,c=0;null!=k.getAttributeForCell(a,n);)c++,n=b+"_"+c;k.setAttributeForCell(a,n,null!=d?d:"")}function Fb(a,b,d,k,n,f){var h=p(b);if(null!=h){var w=Gb[h.Class];
-null!=w&&(a.style+=w+";");w=null!=h.Properties?h.Properties:h;if(null!=w){a.value=f?"":g(w);a.style+=c(a.style,w,h,a,x);a.style.includes("strokeColor")||(a.style+=D(w,h));if(null!=w.Link&&0<w.Link.length&&"ext"==w.Link[0].tp)d.setAttributeForCell(a,"link",w.Link[0].url);else if(null!=w.Text){a:{f=e(w.Text);if(null!=f)for(h=0;h<f.length;h++)if(f[h].n=null!=f[h].v&&0<f[h].v.length&&"ext"==f[h].v[0].tp){f=f[h].v[0].url;break a}f=null}null!=f&&d.setAttributeForCell(a,"link",f)}f=[];var h=d.convertValueToString(a),
-l=!1;if(null!=h){for(var y=0;match=Sc.exec(h);){var z=match[0],l=!0;if(2<z.length){var A=z.substring(2,z.length-2);"documentName"==A?A="filename":"date:"==A.substring(0,5)?A="date{"+A.substring(5).replace(/MMMM/g,"mmmm")+"}":"i18nDate:"==A.substring(0,9)&&(A="date{"+A.substring(9).replace(/i18nShort/g,"shortDate").replace(/i18nMediumWithTime/g,"mmm d, yyyy hh:MM TT")+"}");A="%"+A+"%";f.push(h.substring(y,match.index)+(null!=A?A:z));y=match.index+z.length}}l&&(f.push(h.substring(y)),d.setAttributeForCell(a,
-"label",f.join("")),d.setAttributeForCell(a,"placeholders","1"))}for(var da in w)if(w.hasOwnProperty(da)&&da.toString().startsWith("ShapeData_"))try{var B=w[da],C=mxUtils.trim(B.Label).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,"");Z(a,C,B.Value,d)}catch(Kd){window.console&&console.log("Ignored "+da+":",Kd)}if(a.edge){a.style=null!=w.Rounding&&"diagonal"!=w.Shape?a.style+("rounded=1;arcSize="+w.Rounding+";"):a.style+"rounded=0;";if("diagonal"!=w.Shape)if(null!=w.ElbowPoints)for(a.geometry.points=
-[],da=0;da<w.ElbowPoints.length;da++)a.geometry.points.push(new mxPoint(Math.round(.6*w.ElbowPoints[da].x+wb),Math.round(.6*w.ElbowPoints[da].y+xb)));else"elbow"==w.Shape?a.style=null!=w.Endpoint1.Block&&null!=w.Endpoint2.Block?a.style+"edgeStyle=orthogonalEdgeStyle;":a.style+"edgeStyle=elbowEdgeStyle;":null!=w.Endpoint1.Block&&null!=w.Endpoint2.Block&&(a.style+="edgeStyle=orthogonalEdgeStyle;","curve"==w.Shape&&(a.style+="curved=1;"));null!=w.Endpoint1.Style&&(null!=qb[w.Endpoint1.Style]?a.style+=
-"startArrow="+qb[w.Endpoint1.Style]+";":window.console&&console.log("Unknown endpoint style: "+w.Endpoint1.Style));null!=w.Endpoint2.Style&&(null!=qb[w.Endpoint2.Style]?a.style+="endArrow="+qb[w.Endpoint2.Style].replace(/startSize/g,"endSize")+";":window.console&&console.log("Unknown endpoint style: "+w.Endpoint2.Style));B=w.ElbowControlPoints||w.Joints;if(null!=B)for(a.geometry.points=[],da=0;da<B.length;da++)C=B[da],a.geometry.points.push(new mxPoint(Math.round(.6*C.x+wb),Math.round(.6*C.y+xb)));
-da=!1;null==w.ElbowPoints&&null!=w.Endpoint1.Block&&w.Endpoint1.Block==w.Endpoint2.Block&&null==w.ElbowControlPoints&&null!=k&&null!=n&&(k=new mxPoint(Math.round(k.geometry.x+k.geometry.width*w.Endpoint1.LinkX),Math.round(k.geometry.y+k.geometry.height*w.Endpoint1.LinkY)),n=new mxPoint(Math.round(n.geometry.x+n.geometry.width*w.Endpoint2.LinkX),Math.round(n.geometry.y+n.geometry.height*w.Endpoint2.LinkY)),wb=k.x==n.x?20:0,xb=0,da=new mxPoint(k.x+wb,k.y+xb),B=new mxPoint(n.x+wb,n.y+xb),da.generated=
-!0,B.generated=!0,a.geometry.points=[da,B],implicitX=k.y==n.y,da=k.x==n.x);Pb(a,w.Endpoint1,!0,da);Pb(a,w.Endpoint2,!1,da)}}}null!=b.id&&Z(a,"lucidchartObjectId",b.id,d)}function ea(a,b){var d=p(a).Properties,d=d.BoundingBox;null==a.Class||"AWS"!==a.Class.substring(0,3)&&"Amazon"!==a.Class.substring(0,6)||a.Class.includes("AWS19")||(d.h-=20);v=new mxCell("",new mxGeometry(Math.round(.6*d.x+wb),Math.round(.6*d.y+xb),Math.round(.6*d.w),Math.round(.6*d.h)),"html=1;whiteSpace=wrap;");v.vertex=!0;Fb(v,
-a,b);if(null!=v&&0<=v.style.indexOf(";grIcon=")){var k=new mxCell("",new mxGeometry(v.geometry.x,v.geometry.y,v.geometry.width,v.geometry.height),"html=1;whiteSpace=wrap;");k.vertex=!0;var n=p(a);null!=n&&(d=null!=n.Properties?n.Properties:n,null!=d&&(k.style+=c(k.style,d,n,k)));v.geometry.x=0;v.geometry.y=0;v.style+="part=1;";k.insert(v);v=k}return v}function oa(a,b,d,k){var n=new mxCell("",new mxGeometry(0,0,100,100),"html=1;jettySize=18;");n.geometry.relative=!0;n.edge=!0;Fb(n,a,b,d,k,!0);b=p(a).Properties;
-d=null!=b?b.TextAreas:a.TextAreas;if(null!=d){for(k=0;null!=d["t"+k];){var c=d["t"+k],n=Ma(c,n);k++}for(k=0;null!=d["m"+k]||1>k;)c=d["m"+k],null!=c&&(n=Ma(c,n,a)),k++;null!=d.Text&&(n=Ma(d.Text,n,a));d=null!=b?b.TextAreas:a.TextAreas;null!=d.Message&&(n=Ma(d.Message,n,a))}return n}function Ma(a,b,d){var k=2*(parseFloat(a.Location)-.5);isNaN(k)&&null!=a.Text&&null!=a.Text.Location&&(k=2*(parseFloat(a.Text.Location)-.5));d=mxCell;var c=g(a),k=new mxGeometry(isNaN(k)?0:k,0,0,0),f="11",w="";if(null!=
-a&&null!=a.Value&&null!=a.Value.m)for(var w=n(a.Value.m),l=0;l<a.Value.m.length;l++)if("s"==a.Value.m[l].n)f=.6*parseFloat(a.Value.m[l].v);else if("c"==a.Value.m[l].n){var y=a.Value.m[l].v;null!=y&&("#"!=y.charAt(0)&&(y="#"+y),y=y.substring(0,7));w+="fontColor="+y+";"}a=new d(c,k,"text;html=1;resizable=0;labelBackgroundColor=#ffffff;align=center;verticalAlign=middle;"+(w+";fontSize="+f+";"));a.geometry.relative=!0;a.vertex=!0;b.insert(a);return b}function Va(a,b,d,k){null!=b&&null!=k&&(b=k(b));return null!=
-b&&b!=d?a+"="+b+";":""}function Pb(a,b,d,k,n){null!=b&&null!=b.LinkX&&null!=b.LinkY&&(a.style+=(k?"":(d?"exitX":"entryX")+"="+b.LinkX+";")+(n?"":(d?"exitY":"entryY")+"="+b.LinkY+";")+(d?"exitPerimeter":"entryPerimeter")+"=1;")}function fa(a,b,d){try{null!=a.Action&&null!=a.Action.Properties&&(a=a.Action.Properties);var k=new mxCell("",new mxGeometry,"group;dropTarget=0;");k.vertex=!0;var n=Infinity,c=Infinity,f=-Infinity,w=-Infinity,l=a.Members,y;for(y in l){var z=b[y];null!=z?(n=Math.min(n,z.geometry.x),
-c=Math.min(c,z.geometry.y),f=Math.max(f,z.geometry.x+z.geometry.width),w=Math.max(w,z.geometry.y+z.geometry.height),z.parent=k,k.insert(z)):d[y]=k}k.geometry.x=n;k.geometry.y=c;k.geometry.width=f-n;k.geometry.height=w-c;for(b=0;b<k.children.length;b++){var g=k.children[b].geometry;g.x-=n;g.y-=c}a.IsState?k.lucidLayerInfo={name:a.Name,visible:!a.Hidden,locked:a.Restrictions.b&&a.Restrictions.p&&a.Restrictions.c}:a.Hidden&&(k.visible=!1);return k}catch(Jd){console.log(Jd)}}function Qb(a,b,d,k,n,c){a.getModel().beginUpdate();
-try{var h=function(b,d){function k(a,b){null==a||a.generated||(a.x-=b.x,a.y-=b.y)}var n=null!=d.Endpoint1.Block?w[d.Endpoint1.Block]:null,c=null!=d.Endpoint2.Block?w[d.Endpoint2.Block]:null,h=oa(b,a,n,c);null==n&&null!=d.Endpoint1&&h.geometry.setTerminalPoint(new mxPoint(Math.round(.6*d.Endpoint1.x),Math.round(.6*d.Endpoint1.y)),!0);null==c&&null!=d.Endpoint2&&h.geometry.setTerminalPoint(new mxPoint(Math.round(.6*d.Endpoint2.x),Math.round(.6*d.Endpoint2.y)),!1);var y=l[b.id];if(null!=y){var z=h.geometry,
-g=y.geometry;k(z.sourcePoint,g);k(z.targetPoint,g);k(z.offset,g);z=z.points;if(null!=z)for(var r=0;r<z.length;r++)k(z[r],g)}f.push(a.addCell(h,y,null,n,c))},f=[],w={},l={},y=[];if(null!=b.Blocks)for(var z in b.Blocks){var g=b.Blocks[z];g.id=z;var A=!1;null!=Gb[g.Class]&&"mxCompositeShape"==Gb[g.Class]&&(w[g.id]=dc(g,f,a),y.push(g),A=!0);A||(w[g.id]=ea(g,a),y.push(g))}else{for(var e=0;e<b.Objects.length;e++)g=b.Objects[e],null!=g.Action&&"mxCompositeShape"==Gb[g.Action.Class]?w[g.id]=dc(g,f,a):g.IsBlock&&
-null!=g.Action&&null!=g.Action.Properties&&(w[g.id]=ea(g,a)),y.push(g);for(e=0;e<b.Objects.length;e++)if(g=b.Objects[e],g.IsGroup){var B=fa(g,w,l);B&&(w[g.id]=B,y.push(g))}}if(null!=b.Groups)try{for(z in b.Groups)if(g=b.Groups[z],g.id=z,B=fa(g,w,l))w[g.id]=B,y.push(g)}catch(bc){console.log(bc)}if(null!=b.Lines)for(z in b.Lines)g=b.Lines[z],g.id=z,y.push(g);y.sort(function(a,b){a=p(a);b=p(b);var d=null!=a.Properties?a.Properties.ZOrder:a.ZOrder,k=null!=b.Properties?b.Properties.ZOrder:b.ZOrder;return null!=
-d&&null!=k?d-k:0});for(e=0;e<y.length;e++){var g=y[e],da=w[g.id];if(null!=da){if(null==da.parent)if(da.lucidLayerInfo){var C=new mxCell;a.addCell(C,a.model.root);C.setVisible(da.lucidLayerInfo.visible);da.lucidLayerInfo.locked&&C.setStyle("locked=1;");C.setValue(da.lucidLayerInfo.name);delete da.lucidLayerInfo;a.addCell(da,C)}else f.push(a.addCell(da))}else g.IsLine&&null!=g.Action&&null!=g.Action.Properties?h(g,g.Action.Properties):null!=g.StrokeStyle&&h(g,g)}if(n&&null!=d&&null!=k){a.isGridEnabled()&&
-(d=a.snap(d),k=a.snap(k));var E=a.getBoundingBoxFromGeometry(f,!0);null!=E&&a.moveCells(f,d-E.x,k-E.y)}c||a.setSelectionCells(f)}finally{a.getModel().endUpdate()}}function Ea(){var a=new Graph;a.setExtendParents(!1);a.setExtendParentsOnAdd(!1);a.setConstrainChildren(!1);a.setHtmlLabels(!0);a.getModel().maintainEdgeParent=!1;return a}function ob(a,b,d,k,n,c,f,w){a=new mxCell("",new mxGeometry(a,b,0,0),"strokeColor=none;fillColor=none;");a.vertex=!0;f.insert(a);c=[a];d=d.clone();w.insertEdge(d,!1);
-a.insertEdge(d,!0);c.push(d);k.push(n.addCell(d,null,null,null,null))}function sa(a,b,d,k,n,c,f,w,l){a=new mxCell("",new mxGeometry(a,b,0,0),"strokeColor=none;fillColor=none;");a.vertex=!0;l.insert(a);d=new mxCell("",new mxGeometry(d,k,0,0),"strokeColor=none;fillColor=none;");d.vertex=!0;l.insert(d);w=[d];n=n.clone();a.insertEdge(n,!0);d.insertEdge(n,!1);w.push(n);c.push(f.addCell(n,null,null,null,null))}function ha(a,b,d,k,n,f){k.style="rounded=1;absoluteArcSize=1;fillColor=#ffffff;arcSize=2;strokeColor=#dddddd;";
-k.style+=c(k.style,n,f,k);b=g(n);k.vertex=!0;a=new mxCell(b,new mxGeometry(0,.5,24,24),"dashed=0;connectable=0;html=1;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2."+a+";part=1;shadow=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;");a.style+=c(a.style,n,f,a,x);a.geometry.relative=!0;a.geometry.offset=new mxPoint(5,-12);a.vertex=!0;k.insert(a)}function la(a,b,d,k,n,f,w,l){n="transparent"!=a?mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.":mxConstants.STYLE_SHAPE+
-"=";f.style="rounded=1;absoluteArcSize=1;arcSize=2;verticalAlign=bottom;fillColor=#ffffff;strokeColor=#dddddd;whiteSpace=wrap;";f.style+=c(f.style,w,l,f);f.value=g(w);f.vertex=!0;a=new mxCell(null,new mxGeometry(.5,0,.7*k*b,.7*k*d),n+a+";part=1;dashed=0;connectable=0;html=1;strokeColor=none;shadow=0;");a.geometry.relative=!0;a.geometry.offset=new mxPoint(-b*k*.35,10+(1-d)*k*.35);a.vertex=!0;a.style+=c(a.style,w,l,a,x);f.insert(a)}function dc(b,n,f){var e=p(b),h=e.Properties,Z=h.BoundingBox,t=Math.round(.6*
-Z.w),r=Math.round(.6*Z.h),ea=Math.round(.6*Z.x+wb),oa=Math.round(.6*Z.y+xb);null==b.Class||"GCPInputDatabase"!==b.Class&&"GCPInputRecord"!==b.Class&&"GCPInputPayment"!==b.Class&&"GCPInputGateway"!==b.Class&&"GCPInputLocalCompute"!==b.Class&&"GCPInputBeacon"!==b.Class&&"GCPInputStorage"!==b.Class&&"GCPInputList"!==b.Class&&"GCPInputStream"!==b.Class&&"GCPInputMobileDevices"!==b.Class&&"GCPInputCircuitBoard"!==b.Class&&"GCPInputLive"!==b.Class&&"GCPInputUsers"!==b.Class&&"GCPInputLaptop"!==b.Class&&
-"GCPInputApplication"!==b.Class&&"GCPInputLightbulb"!==b.Class&&"GCPInputGame"!==b.Class&&"GCPInputDesktop"!==b.Class&&"GCPInputDesktopAndMobile"!==b.Class&&"GCPInputWebcam"!==b.Class&&"GCPInputSpeaker"!==b.Class&&"GCPInputRetail"!==b.Class&&"GCPInputReport"!==b.Class&&"GCPInputPhone"!==b.Class&&"GCPInputBlank"!==b.Class||(r+=20);v=new mxCell("",new mxGeometry(ea,oa,t,r),"html=1;whiteSpace=wrap;");v.vertex=!0;var Pb=null!=b.Class?b.Class:null!=e?e.Class:null;switch(Pb){case "BraceNoteBlock":case "UI2BraceNoteBlock":var Qb=
-!1;null!=h.BraceDirection&&"Right"==h.BraceDirection&&(Qb=!0);var Ma=null,fa=null;Qb?(Ma=new mxCell("",new mxGeometry(t-.125*r,0,.125*r,r),"shape=curlyBracket;rounded=1;"),fa=new mxCell("",new mxGeometry(0,0,t-.125*r,r),"strokeColor=none;fillColor=none;")):(Ma=new mxCell("",new mxGeometry(0,0,.125*r,r),"shape=curlyBracket;rounded=1;flipH=1;"),fa=new mxCell("",new mxGeometry(.125*r,0,t-.125*r,r),"strokeColor=none;fillColor=none;"));v.style="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,
-v);Ma.vertex=!0;v.insert(Ma);Ma.style+=c(Ma.style,h,e,Ma);fa.vertex=!0;fa.value=g(h);v.insert(fa);fa.style+=c(fa.style,h,e,fa,x);break;case "BPMNAdvancedPoolBlockRotated":case "UMLMultiLanePoolRotatedBlock":case "UMLMultiLanePoolBlock":case "BPMNAdvancedPoolBlock":case "AdvancedSwimLaneBlockRotated":case "AdvancedSwimLaneBlock":case "UMLSwimLaneBlockV2":var Ea="MainText",nb=null,jd="HeaderFill_",Gb="BodyFill_",qb=25,bc=25,cc=0;if(null!=h.Lanes)cc=h.Lanes.length;else if(null!=h.PrimaryLane){for(var id=
-function(a){if(a)32>a?a=32:208<a&&(a=208);else return 0;return.6*a},cc=h.PrimaryLane.length,m=r=t=0;m<cc;m++)t+=h.PrimaryLane[m];for(m=0;m<h.SecondaryLane.length;m++)r+=h.SecondaryLane[m];qb=id(h.PrimaryPoolTitleHeight);bc=id(h.PrimaryLaneTitleHeight);t*=.6;r=.6*r+qb+bc;v.geometry.width=t;v.geometry.height=r;Ea="poolPrimaryTitleKey";jd="PrimaryLaneHeaderFill_";Gb="CellFill_0,";nb=h.PrimaryLaneTextAreaIds;if(null==nb)for(nb=[],m=0;m<cc;m++)nb.push("Primary_"+m)}if(0==h.IsPrimaryLaneVertical){h.Rotation=
--1.5707963267948966;var dc=v.geometry.x,Qc=v.geometry.y}var Tc=0!=h.Rotation,ld=0<Pb.indexOf("Pool"),Rc=0==Pb.indexOf("BPMN"),Sc=null!=h[Ea];v.style=(ld?"swimlane;startSize="+qb+";":"fillColor=none;strokeColor=none;pointerEvents=0;")+"html=1;whiteSpace=wrap;container=1;collapsible=0;childLayout=stackLayout;resizeParent=1;dropTarget=0;"+(Tc?"horizontalStack=0;":"");v.style+=c(v.style,h,e,v);Sc&&(v.value=g(h[Ea]),v.style+=(x?"overflow=width;":a(h[Ea])+d(h[Ea])+k(h[Ea])+w(h[Ea],v)+y(h[Ea])+z(h[Ea])+
-A(h[Ea])+B(h[Ea]))+C(h[Ea])+E(h[Ea]));for(var kd=0,rb=[],Md="swimlane;html=1;whiteSpace=wrap;container=1;connectable=0;collapsible=0;startSize="+bc+";dropTarget=0;rounded=0;"+(Tc?"horizontal=0;":"")+(Rc?"swimlaneLine=0;fillColor=none;":""),Q=h.Rotation=0;Q<cc;Q++){if(null==nb)var Fc=parseFloat(h.Lanes[Q].p),m=parseInt(h.Lanes[Q].tid)||Q,Pa="Lane_"+m;else Fc=.6*h.PrimaryLane[Q]/t,m=Q,Pa=nb[Q];var md=t*kd,Gc=ld?qb:0;rb.push(new mxCell("",Tc?new mxGeometry(Gc,md,r-Gc,t*Fc):new mxGeometry(md,Gc,t*Fc,
-r-Gc),Md));rb[Q].vertex=!0;v.insert(rb[Q]);rb[Q].value=g(h[Pa]);rb[Q].style+=c(rb[Q].style,h,e,rb[Q],x)+(x?"":a(h[Pa])+d(h[Pa])+k(h[Pa])+w(h[Pa],rb[Q])+y(h[Pa])+z(h[Pa])+A(h[Pa])+B(h[Pa]))+C(h[Pa])+E(h[Pa])+G(h[jd+m])+T(h[Gb+m]);kd+=Fc}null!=dc&&(v.geometry.x=dc,v.geometry.y=Qc);break;case "UMLMultidimensionalSwimlane":var Hb=0,Ib=0,Uc=null,Vc=null;if(null!=h.Rows&&null!=h.Columns)var Hb=h.Rows.length,Ib=h.Columns.length,ec=.6*h.TitleHeight||25,fc=.6*h.TitleWidth||25;else if(null!=h.PrimaryLane&&
-null!=h.SecondaryLane){Hb=h.SecondaryLane.length;Ib=h.PrimaryLane.length;fc=.6*h.SecondaryLaneTitleHeight||25;ec=.6*h.PrimaryLaneTitleHeight||25;for(m=r=t=0;m<Hb;m++)r+=h.SecondaryLane[m];for(m=0;m<Ib;m++)t+=h.PrimaryLane[m];t=.6*t+fc;r=.6*r+ec;v.geometry.width=t;v.geometry.height=r;Uc=h.SecondaryLaneTextAreaIds;Vc=h.PrimaryLaneTextAreaIds}v.style="group;";var Wc=new mxCell("",new mxGeometry(0,ec,t,r-ec),"fillColor=none;strokeColor=none;html=1;whiteSpace=wrap;container=1;collapsible=0;childLayout=stackLayout;resizeParent=1;dropTarget=0;horizontalStack=0;");
-Wc.vertex=!0;var Xc=new mxCell("",new mxGeometry(fc,0,t-fc,r),"fillColor=none;strokeColor=none;html=1;whiteSpace=wrap;container=1;collapsible=0;childLayout=stackLayout;resizeParent=1;dropTarget=0;");Xc.vertex=!0;v.insert(Wc);v.insert(Xc);for(var oa=0,Nd="swimlane;html=1;whiteSpace=wrap;container=1;connectable=0;collapsible=0;dropTarget=0;horizontal=0;startSize="+fc+";",Q=0;Q<Hb;Q++){if(null==Uc)var Yc=.6*parseInt(h.Rows[Q].height),m=parseInt(h.Rows[Q].id)||Q,Qa="Row_"+m;else Yc=.6*h.SecondaryLane[Q],
-Qa=Uc[Q];var yb=new mxCell("",new mxGeometry(0,oa,t,Yc),Nd),oa=oa+Yc;yb.vertex=!0;Wc.insert(yb);yb.value=g(h[Qa]);yb.style+=c(yb.style,h,e,yb,x)+(x?"":a(h[Qa])+d(h[Qa])+k(h[Qa])+w(h[Qa],yb)+y(h[Qa])+z(h[Qa])+A(h[Qa])+B(h[Qa]))+C(h[Qa])+E(h[Qa])}for(var Od="swimlane;html=1;whiteSpace=wrap;container=1;connectable=0;collapsible=0;dropTarget=0;startSize="+ec+";",Q=ea=0;Q<Ib;Q++){if(null==Vc)var Rb=.6*parseInt(h.Columns[Q].width),m=parseInt(h.Columns[Q].id)||Q,Ra="Column_"+m;else Rb=.6*h.PrimaryLane[Q],
-Ra=Vc[Q];var zb=new mxCell("",new mxGeometry(ea,0,Rb,r),Od),ea=ea+Rb;zb.vertex=!0;Xc.insert(zb);zb.value=g(h[Ra]);zb.style+=c(zb.style,h,e,zb,x)+(x?"":a(h[Ra])+d(h[Ra])+k(h[Ra])+w(h[Ra],zb)+y(h[Ra])+z(h[Ra])+A(h[Ra])+B(h[Ra]))+C(h[Ra])+E(h[Ra])}break;case "AndroidDevice":if(null!=h.AndroidDeviceName){v.style="fillColor=#000000;strokeColor=#000000;";var Ab=null,gc=null,hc=null;if("Tablet"==h.AndroidDeviceName||"Mini Tablet"==h.AndroidDeviceName)v.style+="shape=mxgraph.android.tab2;",Ab=new mxCell("",
-new mxGeometry(.112*t,.077*r,.77*t,.85*r),""),h.KeyboardShown&&(gc=new mxCell("",new mxGeometry(.112*t,.727*r,.77*t,.2*r),"shape=mxgraph.android.keyboard;")),h.FullScreen||(hc=new mxCell("",new mxGeometry(.112*t,.077*r,.77*t,.03*r),"shape=mxgraph.android.statusBar;strokeColor=#33b5e5;fillColor=#000000;fontColor=#33b5e5;fontSize="+.015*r+";"));else if("Large Phone"==h.AndroidDeviceName||"Phone"==h.AndroidDeviceName)v.style+="shape=mxgraph.android.phone2;",Ab=new mxCell("",new mxGeometry(.04*t,.092*
-r,.92*t,.816*r),""),h.KeyboardShown&&(gc=new mxCell("",new mxGeometry(.04*t,.708*r,.92*t,.2*r),"shape=mxgraph.android.keyboard;")),h.FullScreen||(hc=new mxCell("",new mxGeometry(.04*t,.092*r,.92*t,.03*r),"shape=mxgraph.android.statusBar;strokeColor=#33b5e5;fillColor=#000000;fontColor=#33b5e5;fontSize="+.015*r+";"));Ab.vertex=!0;v.insert(Ab);"Dark"==h.Scheme?Ab.style+="fillColor=#111111;":"Light"==h.Scheme&&(Ab.style+="fillColor=#ffffff;");null!=gc&&(gc.vertex=!0,v.insert(gc));null!=hc&&(hc.vertex=
-!0,v.insert(hc))}v.style+=c(v.style,h,e,v);break;case "AndroidAlertDialog":var Wa=new mxCell("",new mxGeometry(0,0,t,30),"strokeColor=none;fillColor=none;spacingLeft=9;");Wa.vertex=!0;v.insert(Wa);var qa=new mxCell("",new mxGeometry(0,25,t,10),"shape=line;strokeColor=#33B5E5;");qa.vertex=!0;v.insert(qa);var ic=new mxCell("",new mxGeometry(0,30,t,r-30),"strokeColor=none;fillColor=none;verticalAlign=top;");ic.vertex=!0;v.insert(ic);var ua=new mxCell("",new mxGeometry(0,r-25,.5*t,25),"fillColor=none;");
-ua.vertex=!0;v.insert(ua);var va=new mxCell("",new mxGeometry(.5*t,r-25,.5*t,25),"fillColor=none;");va.vertex=!0;v.insert(va);Wa.value=g(h.DialogTitle);Wa.style+=l(h.DialogTitle,x);ic.value=g(h.DialogText);ic.style+=l(h.DialogText,x);ua.value=g(h.Button_0);ua.style+=l(h.Button_0,x);va.value=g(h.Button_1);va.style+=l(h.Button_1,x);"Dark"==h.Scheme?(v.style+="strokeColor=#353535;fillColor=#282828;shadow=1;",ua.style+="strokeColor=#353535;",va.style+="strokeColor=#353535;"):(v.style+="strokeColor=none;fillColor=#ffffff;shadow=1;",
-ua.style+="strokeColor=#E2E2E2;",va.style+="strokeColor=#E2E2E2;");v.style+=c(v.style,h,e,v);break;case "AndroidDateDialog":case "AndroidTimeDialog":Wa=new mxCell("",new mxGeometry(0,0,t,30),"strokeColor=none;fillColor=none;spacingLeft=9;");Wa.vertex=!0;v.insert(Wa);Wa.value=g(h.DialogTitle);Wa.style+=l(h.DialogTitle,x);qa=new mxCell("",new mxGeometry(0,25,t,10),"shape=line;strokeColor=#33B5E5;");qa.vertex=!0;v.insert(qa);ua=new mxCell("",new mxGeometry(0,r-25,.5*t,25),"fillColor=none;");ua.vertex=
-!0;v.insert(ua);ua.value=g(h.Button_0);ua.style+=l(h.Button_0,x);va=new mxCell("",new mxGeometry(.5*t,r-25,.5*t,25),"fillColor=none;");va.vertex=!0;v.insert(va);va.value=g(h.Button_1);va.style+=l(h.Button_1,x);var Sb=new mxCell("",new mxGeometry(.5*t-4,41,8,4),"shape=triangle;direction=north;");Sb.vertex=!0;v.insert(Sb);var Tb=new mxCell("",new mxGeometry(.25*t-4,41,8,4),"shape=triangle;direction=north;");Tb.vertex=!0;v.insert(Tb);var Ub=new mxCell("",new mxGeometry(.75*t-4,41,8,4),"shape=triangle;direction=north;");
-Ub.vertex=!0;v.insert(Ub);var jc=new mxCell("",new mxGeometry(.375*t,50,.2*t,15),"strokeColor=none;fillColor=none;");jc.vertex=!0;v.insert(jc);jc.value=g(h.Label_1);jc.style+=l(h.Label_1,x);var kc=new mxCell("",new mxGeometry(.125*t,50,.2*t,15),"strokeColor=none;fillColor=none;");kc.vertex=!0;v.insert(kc);kc.value=g(h.Label_0);kc.style+=l(h.Label_0,x);var Vb=null;"AndroidDateDialog"==b.Class&&(Vb=new mxCell("",new mxGeometry(.625*t,50,.2*t,15),"strokeColor=none;fillColor=none;"),Vb.vertex=!0,v.insert(Vb),
-Vb.value=g(h.Label_2),Vb.style+=l(h.Label_2,x));var Xa=new mxCell("",new mxGeometry(.43*t,60,.14*t,10),"shape=line;strokeColor=#33B5E5;");Xa.vertex=!0;v.insert(Xa);var Ya=new mxCell("",new mxGeometry(.18*t,60,.14*t,10),"shape=line;strokeColor=#33B5E5;");Ya.vertex=!0;v.insert(Ya);var nd=new mxCell("",new mxGeometry(.68*t,60,.14*t,10),"shape=line;strokeColor=#33B5E5;");nd.vertex=!0;v.insert(nd);var lc=new mxCell("",new mxGeometry(.375*t,65,.2*t,15),"strokeColor=none;fillColor=none;");lc.vertex=!0;v.insert(lc);
-lc.value=g(h.Label_4);lc.style+=l(h.Label_4,x);var Wb=null;"AndroidTimeDialog"==b.Class&&(Wb=new mxCell("",new mxGeometry(.3*t,65,.1*t,15),"strokeColor=none;fillColor=none;"),Wb.vertex=!0,v.insert(Wb),Wb.value=g(h.Label_Colon),Wb.style+=l(h.Label_Colon,x));var mc=new mxCell("",new mxGeometry(.125*t,65,.2*t,15),"strokeColor=none;fillColor=none;");mc.vertex=!0;v.insert(mc);mc.value=g(h.Label_3);mc.style+=l(h.Label_3,x);var nc=new mxCell("",new mxGeometry(.625*t,65,.2*t,15),"strokeColor=none;fillColor=none;");
-nc.vertex=!0;v.insert(nc);nc.value=g(h.Label_5);nc.style+=l(h.Label_5,x);var od=new mxCell("",new mxGeometry(.43*t,75,.14*t,10),"shape=line;strokeColor=#33B5E5;");od.vertex=!0;v.insert(od);var pd=new mxCell("",new mxGeometry(.18*t,75,.14*t,10),"shape=line;strokeColor=#33B5E5;");pd.vertex=!0;v.insert(pd);var qd=new mxCell("",new mxGeometry(.68*t,75,.14*t,10),"shape=line;strokeColor=#33B5E5;");qd.vertex=!0;v.insert(qd);var oc=new mxCell("",new mxGeometry(.375*t,80,.2*t,15),"strokeColor=none;fillColor=none;");
-oc.vertex=!0;v.insert(oc);oc.value=g(h.Label_7);oc.style+=l(h.Label_7,x);var pc=new mxCell("",new mxGeometry(.125*t,80,.2*t,15),"strokeColor=none;fillColor=none;");pc.vertex=!0;v.insert(pc);pc.value=g(h.Label_6);pc.style+=l(h.Label_6,x);var qc=new mxCell("",new mxGeometry(.625*t,80,.2*t,15),"strokeColor=none;fillColor=none;");qc.vertex=!0;v.insert(qc);qc.value=g(h.Label_8);qc.style+=l(h.Label_8,x);var Xb=new mxCell("",new mxGeometry(.5*t-4,99,8,4),"shape=triangle;direction=south;");Xb.vertex=!0;v.insert(Xb);
-var Yb=new mxCell("",new mxGeometry(.25*t-4,99,8,4),"shape=triangle;direction=south;");Yb.vertex=!0;v.insert(Yb);var Zb=new mxCell("",new mxGeometry(.75*t-4,99,8,4),"shape=triangle;direction=south;");Zb.vertex=!0;v.insert(Zb);"Dark"==h.Scheme?(v.style+="strokeColor=#353535;fillColor=#282828;shadow=1;",ua.style+="strokeColor=#353535;",va.style+="strokeColor=#353535;",Sb.style+="strokeColor=none;fillColor=#7E7E7E;",Tb.style+="strokeColor=none;fillColor=#7E7E7E;",Ub.style+="strokeColor=none;fillColor=#7E7E7E;",
-Xb.style+="strokeColor=none;fillColor=#7E7E7E;",Yb.style+="strokeColor=none;fillColor=#7E7E7E;",Zb.style+="strokeColor=none;fillColor=#7E7E7E;"):(v.style+="strokeColor=none;fillColor=#ffffff;shadow=1;",ua.style+="strokeColor=#E2E2E2;",va.style+="strokeColor=#E2E2E2;",Sb.style+="strokeColor=none;fillColor=#939393;",Tb.style+="strokeColor=none;fillColor=#939393;",Ub.style+="strokeColor=none;fillColor=#939393;",Xb.style+="strokeColor=none;fillColor=#939393;",Yb.style+="strokeColor=none;fillColor=#939393;",
-Zb.style+="strokeColor=none;fillColor=#939393;");v.style+=c(v.style,h,e,v);break;case "AndroidListItems":var Ca=r,sb=0;if(h.ShowHeader){var sb=8,rc=new mxCell("",new mxGeometry(0,0,t,sb),"strokeColor=none;fillColor=none;");rc.vertex=!0;v.insert(rc);rc.value=g(h.Header);rc.style+=l(h.Header,x);var Ca=Ca-sb,rd=new mxCell("",new mxGeometry(0,sb-2,t,4),"shape=line;strokeColor=#999999;");rd.vertex=!0;v.insert(rd)}var Za=parseInt(h.Items);0<Za&&(Ca/=Za);for(var H=[],qa=[],m=0;m<Za;m++)H[m]=new mxCell("",
-new mxGeometry(0,sb+m*Ca,t,Ca),"strokeColor=none;fillColor=none;"),H[m].vertex=!0,v.insert(H[m]),H[m].value=g(h["Item_"+m]),H[m].style+=l(h["Item_"+m],x),0<m&&(qa[m]=new mxCell("",new mxGeometry(0,sb+m*Ca-2,t,4),"shape=line;"),qa[m].vertex=!0,v.insert(qa[m]),qa[m].style="Dark"==h.Scheme?qa[m].style+"strokeColor=#ffffff;":qa[m].style+"strokeColor=#D9D9D9;");v.style="Dark"==h.Scheme?v.style+"strokeColor=none;fillColor=#111111;":v.style+"strokeColor=none;fillColor=#ffffff;";v.style+=c(v.style,h,e,v);
-break;case "AndroidTabs":var $a=parseInt(h.Tabs),Ia=t;0<$a&&(Ia/=$a);for(var ia=[],qa=[],m=0;m<$a;m++)ia[m]=new mxCell("",new mxGeometry(m*Ia,0,Ia,r),"strokeColor=none;fillColor=none;"),ia[m].vertex=!0,v.insert(ia[m]),ia[m].value=g(h["Tab_"+m]),ia[m].style+=l(h["Tab_"+m],x),0<m&&(qa[m]=new mxCell("",new mxGeometry(m*Ia-2,.2*r,4,.6*r),"shape=line;direction=north;"),qa[m].vertex=!0,v.insert(qa[m]),qa[m].style="Dark"==h.Scheme?qa[m].style+"strokeColor=#484848;":qa[m].style+"strokeColor=#CCCCCC;");var sd=
-new mxCell("",new mxGeometry(h.Selected*Ia+2,r-3,Ia-4,3),"strokeColor=none;fillColor=#33B5E5;");sd.vertex=!0;v.insert(sd);v.style="Dark"==h.Scheme?v.style+"strokeColor=none;fillColor=#333333;":v.style+"strokeColor=none;fillColor=#DDDDDD;";v.style+=c(v.style,h,e,v);break;case "AndroidProgressBar":v=new mxCell("",new mxGeometry(Math.round(ea),Math.round(oa+.25*r),Math.round(t),Math.round(.5*r)),"html=1;whiteSpace=wrap;");v.vertex=!0;var sc=new mxCell("",new mxGeometry(0,0,t*h.BarPosition,Math.round(.5*
-r)),"strokeColor=none;fillColor=#33B5E5;");sc.vertex=!0;v.insert(sc);v.style="Dark"==h.Scheme?v.style+"strokeColor=none;fillColor=#474747;":v.style+"strokeColor=none;fillColor=#BBBBBB;";v.style+=c(v.style,h,e,v);break;case "AndroidImageBlock":v.style="Dark"==h.Scheme?v.style+"shape=mxgraph.mockup.graphics.simpleIcon;strokeColor=#7E7E7E;fillColor=#111111;":v.style+"shape=mxgraph.mockup.graphics.simpleIcon;strokeColor=#939393;fillColor=#ffffff;";v.style+=c(v.style,h,e,v);break;case "AndroidTextBlock":v.style=
-"Dark"==h.Scheme?h.ShowBorder?v.style+"fillColor=#111111;strokeColor=#ffffff;":v.style+"fillColor=#111111;strokeColor=none;":h.ShowBorder?v.style+"fillColor=#ffffff;strokeColor=#000000;":v.style+"fillColor=#ffffff;strokeColor=none;";v.value=g(h.Label);v.style+=l(h.Label,x);v.style+=c(v.style,h,e,v,x);break;case "AndroidActionBar":v.style+="strokeColor=none;";switch(h.BarBackground){case "Blue":v.style+="fillColor=#002E3E;";break;case "Gray":v.style+="fillColor=#DDDDDD;";break;case "Dark Gray":v.style+=
-"fillColor=#474747;";break;case "White":v.style+="fillColor=#ffffff;"}if(h.HighlightShow){var tb=null,tb=h.HighlightTop?new mxCell("",new mxGeometry(0,0,t,2),"strokeColor=none;"):new mxCell("",new mxGeometry(0,r-2,t,2),"strokeColor=none;");tb.vertex=!0;v.insert(tb);switch(h.HighlightColor){case "Blue":tb.style+="fillColor=#33B5E5;";break;case "Dark Gray":tb.style+="fillColor=#B0B0B0;";break;case "White":tb.style+="fillColor=#ffffff;"}}if(h.VlignShow){var $b=new mxCell("",new mxGeometry(20,5,2,r-10),
-"shape=line;direction=north;");$b.vertex=!0;v.insert($b);switch(h.VlignColor){case "Blue":$b.style+="strokeColor=#244C5A;";break;case "White":$b.style+="strokeColor=#ffffff;"}}v.style+=c(v.style,h,e,v);break;case "AndroidButton":v.value=g(h.Label);v.style+=l(h.Label,x)+"shape=partialRectangle;left=0;right=0;";v.style="Dark"==h.Scheme?v.style+"fillColor=#474747;strokeColor=#C6C5C6;bottom=0;":v.style+"fillColor=#DFE0DF;strokeColor=#C6C5C6;top=0;";v.style+=c(v.style,h,e,v);break;case "AndroidTextBox":v.value=
-g(h.Label);v.style+=l(h.Label,x);var tc=new mxCell("",new mxGeometry(2,r-6,t-4,4),"shape=partialRectangle;top=0;fillColor=none;");tc.vertex=!0;v.insert(tc);v.style="Dark"==h.Scheme?v.style+"fillColor=#111111;strokeColor=none;":v.style+"fillColor=#ffffff;strokeColor=none;";tc.style=h.TextFocused?tc.style+"strokeColor=#33B5E5;":tc.style+"strokeColor=#A9A9A9;";v.style+=c(v.style,h,e,v);break;case "AndroidRadioButton":var Jb=null;h.Checked&&(Jb=new mxCell("",new mxGeometry(.15*t,.15*r,.7*t,.7*r),"shape=ellipse;fillColor=#33B5E5;strokeWidth=1;"),
-Jb.vertex=!0,v.insert(Jb));"Dark"==h.Scheme?(v.style+="shape=ellipse;strokeWidth=1;strokeColor=#272727;",h.Checked?(Jb.style+="strokeColor=#1F5C73;",v.style+="fillColor=#193C49;"):v.style+="fillColor=#111111;"):(v.style+="shape=ellipse;strokeWidth=1;fillColor=#ffffff;strokeColor=#5C5C5C;",h.Checked&&(Jb.style+="strokeColor=#999999;"));v.style+=c(v.style,h,e,v);break;case "AndroidCheckBox":var Zc=null;h.Checked&&(Zc=new mxCell("",new mxGeometry(.25*t,.05*-r,t,.8*r),"shape=mxgraph.ios7.misc.check;strokeColor=#33B5E5;strokeWidth=2;"),
-Zc.vertex=!0,v.insert(Zc));v.style="Dark"==h.Scheme?v.style+"strokeWidth=1;strokeColor=#272727;fillColor=#111111;":v.style+"strokeWidth=1;strokeColor=#5C5C5C;fillColor=#ffffff;";v.style+=c(v.style,h,e,v);break;case "AndroidToggle":v.style="Dark"==h.Scheme?h.Checked?v.style+"shape=mxgraph.android.switch_on;fillColor=#666666;":v.style+"shape=mxgraph.android.switch_off;fillColor=#666666;":h.Checked?v.style+"shape=mxgraph.android.switch_on;fillColor=#E6E6E6;":v.style+"shape=mxgraph.android.switch_off;fillColor=#E6E6E6;";
-v.style+=c(v.style,h,e,v);break;case "AndroidSlider":v.style+="shape=mxgraph.android.progressScrubberFocused;dx="+h.BarPosition+";fillColor=#33b5e5;";v.style+=c(v.style,h,e,v);break;case "iOSSegmentedControl":$a=parseInt(h.Tabs);Ia=t;v.style+="strokeColor=none;fillColor=none;";0<$a&&(Ia/=$a);ia=[];qa=[];for(m=0;m<$a;m++)ia[m]=new mxCell("",new mxGeometry(m*Ia,0,Ia,r),"strokeColor="+h.FillColor+";"),ia[m].vertex=!0,v.insert(ia[m]),ia[m].value=g(h["Tab_"+m]),ia[m].style+=l(h["Tab_"+m],x),ia[m].style=
-h.Selected==m?ia[m].style+O(h,e):ia[m].style+"fillColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSSlider":v.style+="shape=mxgraph.ios7ui.slider;strokeColor="+h.FillColor+";fillColor=#ffffff;strokeWidth=2;barPos="+100*h.BarPosition+";";v.style+=c(v.style,h,e,v);break;case "iOSProgressBar":v=new mxCell("",new mxGeometry(Math.round(ea),Math.round(oa+.25*r),Math.round(t),Math.round(.5*r)),"html=1;whiteSpace=wrap;strokeColor=none;fillColor=#B5B5B5;");v.vertex=!0;sc=new mxCell("",new mxGeometry(0,
-0,t*h.BarPosition,Math.round(.5*r)),"strokeColor=none;"+O(h,e));sc.vertex=!0;v.insert(sc);v.style+=c(v.style,h,e,v);break;case "iOSPageControls":v.style+="shape=mxgraph.ios7ui.pageControl;strokeColor=#D6D6D6;";v.style+=c(v.style,h,e,v);break;case "iOSStatusBar":v.style+="shape=mxgraph.ios7ui.appBar;strokeColor=#000000;";var U=new mxCell(g(h.Text),new mxGeometry(.35*t,0,.3*t,r),"strokeColor=none;fillColor=none;");U.vertex=!0;v.insert(U);U.style+=l(h.Text,x);var Fa=new mxCell(g(h.Carrier),new mxGeometry(.09*
-t,0,.2*t,r),"strokeColor=none;fillColor=none;");Fa.vertex=!0;v.insert(Fa);Fa.style+=l(h.Carrier,x);v.style+=c(v.style,h,e,v);break;case "iOSSearchBar":v.value=g(h.Search);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v,x)+l(h.Search,x);var Y=new mxCell("",new mxGeometry(.3*t,.3*r,.4*r,.4*r),"shape=mxgraph.ios7.icons.looking_glass;strokeColor=#000000;fillColor=none;");Y.vertex=!0;v.insert(Y);break;case "iOSNavBar":v.value=g(h.Title);v.style+="shape=partialRectangle;top=0;right=0;left=0;strokeColor=#979797;";
-+l(h.Title,x);v.style+=c(v.style,h,e,v,x);U=new mxCell(g(h.LeftText),new mxGeometry(.03*t,0,.3*t,r),"strokeColor=none;fillColor=none;");U.vertex=!0;v.insert(U);U.style+=l(h.LeftText,x);Fa=new mxCell(g(h.RightText),new mxGeometry(.65*t,0,.3*t,r),"strokeColor=none;fillColor=none;");Fa.vertex=!0;v.insert(Fa);Fa.style+=l(h.RightText,x);Y=new mxCell("",new mxGeometry(.02*t,.2*r,.3*r,.5*r),"shape=mxgraph.ios7.misc.left;strokeColor=#007AFF;strokeWidth=2;");Y.vertex=!0;v.insert(Y);break;case "iOSTabs":$a=
-parseInt(h.Tabs);Ia=t;v.style+="shape=partialRectangle;right=0;left=0;bottom=0;strokeColor=#979797;";v.style+=c(v.style,h,e,v);0<$a&&(Ia/=$a);ia=[];qa=[];for(m=0;m<$a;m++)ia[m]=new mxCell("",new mxGeometry(m*Ia,0,Ia,r),"strokeColor=none;"),ia[m].vertex=!0,v.insert(ia[m]),ia[m].value=g(h["Tab_"+m]),ia[m].style+=x?"overflow=width;html=1;":a(h["Tab_"+m])+d(h["Tab_"+m])+k(h["Tab_"+m])+w(h["Tab_"+m])+y(h["Tab_"+m])+z(h["Tab_"+m])+A(h["Tab_"+m])+B(h["Tab_"+m])+C(h["Tab_"+m]),ia[m].style+="verticalAlign=bottom;",
-ia[m].style=h.Selected==m?ia[m].style+"fillColor=#BBBBBB;":ia[m].style+"fillColor=none;";break;case "iOSDatePicker":var ab=new mxCell("",new mxGeometry(0,0,.5*t,.2*r),"strokeColor=none;fillColor=none;");ab.vertex=!0;v.insert(ab);ab.value=g(h.Option11);ab.style+=l(h.Option11,x);var bb=new mxCell("",new mxGeometry(.5*t,0,.15*t,.2*r),"strokeColor=none;fillColor=none;");bb.vertex=!0;v.insert(bb);bb.value=g(h.Option21);bb.style+=l(h.Option21,x);var cb=new mxCell("",new mxGeometry(.65*t,0,.15*t,.2*r),"strokeColor=none;fillColor=none;");
-cb.vertex=!0;v.insert(cb);cb.value=g(h.Option31);cb.style+=l(h.Option31,x);var db=new mxCell("",new mxGeometry(0,.2*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");db.vertex=!0;v.insert(db);db.value=g(h.Option12);db.style+=l(h.Option12,x);var eb=new mxCell("",new mxGeometry(.5*t,.2*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");eb.vertex=!0;v.insert(eb);eb.value=g(h.Option22);eb.style+=l(h.Option22,x);var fb=new mxCell("",new mxGeometry(.65*t,.2*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
-fb.vertex=!0;v.insert(fb);fb.value=g(h.Option32);fb.style+=l(h.Option32,x);var wa=new mxCell("",new mxGeometry(0,.4*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");wa.vertex=!0;v.insert(wa);wa.value=g(h.Option13);wa.style+=l(h.Option13,x);var xa=new mxCell("",new mxGeometry(.5*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");xa.vertex=!0;v.insert(xa);xa.value=g(h.Option23);xa.style+=l(h.Option23,x);var gb=new mxCell("",new mxGeometry(.65*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
-gb.vertex=!0;v.insert(gb);gb.value=g(h.Option33);gb.style+=l(h.Option33,x);var ya=new mxCell("",new mxGeometry(.8*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");ya.vertex=!0;v.insert(ya);ya.value=g(h.Option43);ya.style+=l(h.Option43,x);var za=new mxCell("",new mxGeometry(0,.6*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");za.vertex=!0;v.insert(za);za.value=g(h.Option14);za.style+=l(h.Option14,x);var hb=new mxCell("",new mxGeometry(.5*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
-hb.vertex=!0;v.insert(hb);hb.value=g(h.Option24);hb.style+=l(h.Option24,x);var ib=new mxCell("",new mxGeometry(.65*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");ib.vertex=!0;v.insert(ib);ib.value=g(h.Option34);ib.style+=l(h.Option34,x);var jb=new mxCell("",new mxGeometry(.8*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");jb.vertex=!0;v.insert(jb);jb.value=g(h.Option44);jb.style+=l(h.Option44,x);var Aa=new mxCell("",new mxGeometry(0,.8*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");
-Aa.vertex=!0;v.insert(Aa);Aa.value=g(h.Option15);Aa.style+=l(h.Option15,x);var kb=new mxCell("",new mxGeometry(.5*t,.8*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");kb.vertex=!0;v.insert(kb);kb.value=g(h.Option25);kb.style+=l(h.Option25,x);var lb=new mxCell("",new mxGeometry(.65*t,.8*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");lb.vertex=!0;v.insert(lb);lb.value=g(h.Option35);lb.style+=l(h.Option35,x);Xa=new mxCell("",new mxGeometry(0,.4*r-2,t,4),"shape=line;strokeColor=#888888;");Xa.vertex=
-!0;v.insert(Xa);Ya=new mxCell("",new mxGeometry(0,.6*r-2,t,4),"shape=line;strokeColor=#888888;");Ya.vertex=!0;v.insert(Ya);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSTimePicker":ab=new mxCell("",new mxGeometry(0,0,.25*t,.2*r),"strokeColor=none;fillColor=none;");ab.vertex=!0;v.insert(ab);ab.value=g(h.Option11);ab.style+=l(h.Option11,x);bb=new mxCell("",new mxGeometry(.25*t,0,.3*t,.2*r),"strokeColor=none;fillColor=none;");bb.vertex=!0;v.insert(bb);bb.value=g(h.Option21);bb.style+=
-l(h.Option21,x);db=new mxCell("",new mxGeometry(0,.2*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");db.vertex=!0;v.insert(db);db.value=g(h.Option12);db.style+=l(h.Option12,x);eb=new mxCell("",new mxGeometry(.25*t,.2*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");eb.vertex=!0;v.insert(eb);eb.value=g(h.Option22);eb.style+=l(h.Option22,x);wa=new mxCell("",new mxGeometry(0,.4*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");wa.vertex=!0;v.insert(wa);wa.value=g(h.Option13);wa.style+=l(h.Option13,
-x);xa=new mxCell("",new mxGeometry(.25*t,.4*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");xa.vertex=!0;v.insert(xa);xa.value=g(h.Option23);xa.style+=l(h.Option23,x);ya=new mxCell("",new mxGeometry(.7*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");ya.vertex=!0;v.insert(ya);ya.value=g(h.Option33);ya.style+=l(h.Option33,x);za=new mxCell("",new mxGeometry(0,.6*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");za.vertex=!0;v.insert(za);za.value=g(h.Option14);za.style+=l(h.Option14,x);hb=new mxCell("",
-new mxGeometry(.25*t,.6*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");hb.vertex=!0;v.insert(hb);hb.value=g(h.Option24);hb.style+=l(h.Option24,x);jb=new mxCell("",new mxGeometry(.7*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");jb.vertex=!0;v.insert(jb);jb.value=g(h.Option34);jb.style+=l(h.Option34,x);Aa=new mxCell("",new mxGeometry(0,.8*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");Aa.vertex=!0;v.insert(Aa);Aa.value=g(h.Option15);Aa.style+=l(h.Option15,x);kb=new mxCell("",new mxGeometry(.25*
-t,.8*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");kb.vertex=!0;v.insert(kb);kb.value=g(h.Option25);kb.style+=l(h.Option25,x);Xa=new mxCell("",new mxGeometry(0,.4*r-2,t,4),"shape=line;strokeColor=#888888;");Xa.vertex=!0;v.insert(Xa);Ya=new mxCell("",new mxGeometry(0,.6*r-2,t,4),"shape=line;strokeColor=#888888;");Ya.vertex=!0;v.insert(Ya);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSCountdownPicker":cb=new mxCell("",new mxGeometry(.45*t,0,.2*t,.2*r),"strokeColor=none;fillColor=none;");
-cb.vertex=!0;v.insert(cb);cb.value=g(h.Option31);cb.style+=l(h.Option31,x);fb=new mxCell("",new mxGeometry(.45*t,.2*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");fb.vertex=!0;v.insert(fb);fb.value=g(h.Option32);fb.style+=l(h.Option32,x);wa=new mxCell("",new mxGeometry(0,.4*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");wa.vertex=!0;v.insert(wa);wa.value=g(h.Option13);wa.style+=l(h.Option13,x);xa=new mxCell("",new mxGeometry(.2*t,.4*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");xa.vertex=
-!0;v.insert(xa);xa.value=g(h.Option23);xa.style+=l(h.Option23,x);gb=new mxCell("",new mxGeometry(.45*t,.4*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");gb.vertex=!0;v.insert(gb);gb.value=g(h.Option33);gb.style+=l(h.Option33,x);ya=new mxCell("",new mxGeometry(.6*t,.4*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");ya.vertex=!0;v.insert(ya);ya.value=g(h.Option43);ya.style+=l(h.Option43,x);za=new mxCell("",new mxGeometry(0,.6*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");za.vertex=!0;v.insert(za);
-za.value=g(h.Option14);za.style+=l(h.Option14,x);ib=new mxCell("",new mxGeometry(.45*t,.6*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");ib.vertex=!0;v.insert(ib);ib.value=g(h.Option34);ib.style+=l(h.Option34,x);Aa=new mxCell("",new mxGeometry(0,.8*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");Aa.vertex=!0;v.insert(Aa);Aa.value=g(h.Option15);Aa.style+=l(h.Option15,x);lb=new mxCell("",new mxGeometry(.45*t,.8*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");lb.vertex=!0;v.insert(lb);lb.value=
-g(h.Option35);lb.style+=l(h.Option35,x);Xa=new mxCell("",new mxGeometry(0,.4*r-2,t,4),"shape=line;strokeColor=#888888;");Xa.vertex=!0;v.insert(Xa);Ya=new mxCell("",new mxGeometry(0,.6*r-2,t,4),"shape=line;strokeColor=#888888;");Ya.vertex=!0;v.insert(Ya);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSBasicCell":v.value=g(h.text);v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;spacing=0;align=left;spacingLeft="+.6*h.SeparatorInset+";";
-v.style+=(x?"":a(h.text)+d(h.text)+k(h.text))+E(h.text);v.style+=c(v.style,h,e,v,x);switch(h.AccessoryIndicatorType){case "Disclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);var pa=new mxCell("",new mxGeometry(.79*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");
-pa.vertex=!0;v.insert(pa);break;case "DetailIndicator":pa=new mxCell("",new mxGeometry(.87*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;"),Y.vertex=!0,v.insert(Y)}break;case "iOSSubtitleCell":v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;align=left;spacing=0;verticalAlign=top;spacingLeft="+
-.6*h.SeparatorInset+";";v.value=g(h.subtext);v.style+=x?"":a(h.subtext)+d(h.subtext)+k(h.subtext);v.style+=c(v.style,h,e,v,x);var ra=new mxCell("",new mxGeometry(0,.4*r,t,.6*r),"fillColor=none;strokeColor=none;spacing=0;align=left;verticalAlign=bottom;spacingLeft="+.6*h.SeparatorInset+";");ra.vertex=!0;v.insert(ra);ra.value=g(h.text);ra.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);switch(h.AccessoryIndicatorType){case "Disclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");
+f.Class||(0<=f.Class.indexOf("Rotated")||-90==c||270==c)&&(0<=f.Class.indexOf("Pool")||0<=f.Class.indexOf("SwimLane")))?(c+=90,h.geometry.rotate90(),n=!1):0<=mxUtils.indexOf(Rc,f.Class)?(c-=90,h.geometry.rotate90()):0<=mxUtils.indexOf(Sc,f.Class)&&(c+=180),0!=c&&(b+="rotation="+c+";"),n||(b+="horizontal=0;")),b;case mxConstants.STYLE_FLIPH:return f=c.FlipX?"flipH=1;":"",f;case mxConstants.STYLE_FLIPV:return f=c.FlipY?"flipV=1;":"",f;case mxConstants.STYLE_SHADOW:return X(c);case mxConstants.STYLE_FILLCOLOR:return O(c,
+f);case mxConstants.STYLE_DASHED:return na(c);case mxConstants.STYLE_STROKEWIDTH:return ja(c);case mxConstants.STYLE_IMAGE:return h=null,"ImageSearchBlock2"==f.Class?h=c.URL:"UserImage2Block"==f.Class&&null!=c.ImageFillProps&&null!=c.ImageFillProps.url&&(h=c.ImageFillProps.url),null!=h?(null!=LucidImporter.imgSrcMap&&null!=LucidImporter.imgSrcMap[h]&&(h=LucidImporter.imgSrcMap[h]),f="image="+h+";"):f="",f}return""}function a(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("s"==d.n&&null!=
+d.v)return"fontSize="+Math.round(.6*d.v)+";";b++}return"fontSize=11;"}function d(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("c"==d.n&&null!=d.v)return a=d.v,"#"!=a.charAt(0)&&(a="#"+a),a=a.substring(0,7),mxConstants.STYLE_FONTCOLOR+"="+a+";";b++}return""}function k(a){return n(e(a))}function n(a){if(null!=a){var b=0,d=!1;if(null!=a)for(var k=0;!d&&k<a.length;){var n=a[k];"b"==n.n?null!=n.v&&n.v&&(d=!0,b+=1):"fc"==n.n&&"Bold"==n.v&&(d=!0,b+=1);k++}d=!1;if(null!=a)for(k=0;!d&&k<a.length;)n=
+a[k],"i"==n.n&&null!=n.v&&n.v&&(d=!0,b+=2),k++;d=!1;if(null!=a)for(k=0;!d&&k<a.length;)n=a[k],"u"==n.n&&null!=n.v&&n.v&&(d=!0,b+=4),k++;if(0<b)return"fontStyle="+b+";"}return""}function w(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("a"==d.n&&null!=d.v)return"align="+d.v+";";b++}return""}function y(a){var b=e(a);if(null!=b)for(var d=0;d<b.length;){var k=b[d];if(null!=k.v){if("il"==k.n)return"spacingLeft="+.6*k.v+";";w(a)}d++}return""}function z(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=
+a[b];if("ir"==d.n&&null!=d.v)return"spacingRight="+d.v+";";b++}return""}function A(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("mt"==d.n&&null!=d.v)return"spacingTop="+d.v+";";b++}return""}function B(a){a=e(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("mb"==d.n&&null!=d.v)return"spacingBottom="+d.v+";";b++}return""}function C(a){return"number"===typeof a.InsetMargin?"spacing="+Math.max(0,Math.round(.6*parseInt(a.InsetMargin)))+";":""}function E(a){return null!=a.Text_VAlign&&
+"string"===typeof a.Text_VAlign?"verticalAlign="+a.Text_VAlign+";":null!=a.Title_VAlign&&"string"===typeof a.Title_VAlign?"verticalAlign="+a.Title_VAlign+";":Va(mxConstants.STYLE_VERTICAL_ALIGN,a.TextVAlign,"middle")}function D(a,b){return 0==a.LineWidth?mxConstants.STYLE_STROKECOLOR+"=none;":Va(mxConstants.STYLE_STROKECOLOR,ba(a.LineColor),"#000000")}function G(a){return null!=a?mxConstants.STYLE_FILLCOLOR+"="+ba(a)+";":""}function T(a){return null!=a?"swimlaneFillColor="+ba(a)+";":""}function M(a,
+b,d){b="";if("string"===typeof a.LineColor&&7<a.LineColor.length){var k="0x"+a.LineColor.substring(a.LineColor.length-2,a.LineColor.length);d.style.includes("strokeOpacity")||(b+="strokeOpacity="+Math.round(parseInt(k)/2.55)+";")}"string"===typeof a.FillColor&&7<a.FillColor.length&&(a="0x"+a.FillColor.substring(a.FillColor.length-2,a.FillColor.length),d.style.includes("fillOpacity")||(b+="fillOpacity="+Math.round(parseInt(a)/2.55)+";"));return b}function X(a){return null!=a.Shadow?mxConstants.STYLE_SHADOW+
+"=1;":""}function ba(a){return a?a.substring(0,7):null}function ga(a,b){return a&&7<a.length?b+"="+Math.round(parseInt("0x"+a.substr(7))/2.55)+";":""}function O(a,b){if(null!=a.FillColor)if("object"===typeof a.FillColor){if(null!=a.FillColor.cs&&1<a.FillColor.cs.length)return Va(mxConstants.STYLE_FILLCOLOR,ba(a.FillColor.cs[0].c))+Va(mxConstants.STYLE_GRADIENTCOLOR,ba(a.FillColor.cs[1].c))}else return"string"===typeof a.FillColor?Va(mxConstants.STYLE_FILLCOLOR,ba(a.FillColor),"#FFFFFF"):Va(mxConstants.STYLE_FILLCOLOR,
+"none");return""}function na(a){return"dotted"==a.StrokeStyle?"dashed=1;dashPattern=1 4;":"dashdot"==a.StrokeStyle?"dashed=1;dashPattern=10 5 1 5;":"dotdotdot"==a.StrokeStyle?"dashed=1;dashPattern=1 2;":"longdash"==a.StrokeStyle?"dashed=1;dashPattern=16 6;":null!=a.StrokeStyle&&"dashed"==a.StrokeStyle.substring(0,6)?"dashed=1;":""}function ja(a){return Va(mxConstants.STYLE_STROKEWIDTH,Math.round(.6*parseFloat(a.LineWidth)),"1")}function Z(a,b,d,k){for(var n=b,c=0;null!=k.getAttributeForCell(a,n);)c++,
+n=b+"_"+c;k.setAttributeForCell(a,n,null!=d?d:"")}function Eb(a,b,d,k,n,f){var h=p(b);if(null!=h){var w=Fb[h.Class];null!=w&&(a.style+=w+";");w=null!=h.Properties?h.Properties:h;if(null!=w){a.value=f?"":g(w);a.style+=c(a.style,w,h,a,x);a.style.includes("strokeColor")||(a.style+=D(w,h));if(null!=w.Link&&0<w.Link.length&&"ext"==w.Link[0].tp)d.setAttributeForCell(a,"link",w.Link[0].url);else if(null!=w.Text){a:{f=e(w.Text);if(null!=f)for(h=0;h<f.length;h++)if(f[h].n=null!=f[h].v&&0<f[h].v.length&&"ext"==
+f[h].v[0].tp){f=f[h].v[0].url;break a}f=null}null!=f&&d.setAttributeForCell(a,"link",f)}f=[];var h=d.convertValueToString(a),l=!1;if(null!=h){for(var y=0;match=Tc.exec(h);){var z=match[0],l=!0;if(2<z.length){var A=z.substring(2,z.length-2);"documentName"==A?A="filename":"date:"==A.substring(0,5)?A="date{"+A.substring(5).replace(/MMMM/g,"mmmm")+"}":"i18nDate:"==A.substring(0,9)&&(A="date{"+A.substring(9).replace(/i18nShort/g,"shortDate").replace(/i18nMediumWithTime/g,"mmm d, yyyy hh:MM TT")+"}");A=
+"%"+A+"%";f.push(h.substring(y,match.index)+(null!=A?A:z));y=match.index+z.length}}l&&(f.push(h.substring(y)),d.setAttributeForCell(a,"label",f.join("")),d.setAttributeForCell(a,"placeholders","1"))}for(var ca in w)if(w.hasOwnProperty(ca)&&ca.toString().startsWith("ShapeData_"))try{var B=w[ca],C=mxUtils.trim(B.Label).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,"");Z(a,C,B.Value,d)}catch(Ld){window.console&&console.log("Ignored "+ca+":",Ld)}if(a.edge){a.style=null!=w.Rounding&&"diagonal"!=
+w.Shape?a.style+("rounded=1;arcSize="+w.Rounding+";"):a.style+"rounded=0;";if("diagonal"!=w.Shape)if(null!=w.ElbowPoints&&0<w.ElbowPoints.length)for(a.geometry.points=[],ca=0;ca<w.ElbowPoints.length;ca++)a.geometry.points.push(new mxPoint(Math.round(.6*w.ElbowPoints[ca].x+vb),Math.round(.6*w.ElbowPoints[ca].y+wb)));else"elbow"==w.Shape?a.style=null!=w.Endpoint1.Block&&null!=w.Endpoint2.Block?a.style+"edgeStyle=orthogonalEdgeStyle;":a.style+"edgeStyle=elbowEdgeStyle;":null!=w.Endpoint1.Block&&null!=
+w.Endpoint2.Block&&(a.style+="edgeStyle=orthogonalEdgeStyle;","curve"==w.Shape&&(a.style+="curved=1;"));null!=w.Endpoint1.Style&&(null!=Gb[w.Endpoint1.Style]?a.style+="startArrow="+Gb[w.Endpoint1.Style]+";":window.console&&console.log("Unknown endpoint style: "+w.Endpoint1.Style));null!=w.Endpoint2.Style&&(null!=Gb[w.Endpoint2.Style]?a.style+="endArrow="+Gb[w.Endpoint2.Style].replace(/startSize/g,"endSize")+";":window.console&&console.log("Unknown endpoint style: "+w.Endpoint2.Style));B=w.ElbowControlPoints||
+w.BezierJoints||w.Joints;if(null!=B)for(a.geometry.points=[],ca=0;ca<B.length;ca++)C=B[ca].p?B[ca].p:B[ca],a.geometry.points.push(new mxPoint(Math.round(.6*C.x+vb),Math.round(.6*C.y+wb)));ca=!1;null==w.ElbowPoints&&null!=w.Endpoint1.Block&&w.Endpoint1.Block==w.Endpoint2.Block&&null==w.ElbowControlPoints&&null!=k&&null!=n&&(k=new mxPoint(Math.round(k.geometry.x+k.geometry.width*w.Endpoint1.LinkX),Math.round(k.geometry.y+k.geometry.height*w.Endpoint1.LinkY)),n=new mxPoint(Math.round(n.geometry.x+n.geometry.width*
+w.Endpoint2.LinkX),Math.round(n.geometry.y+n.geometry.height*w.Endpoint2.LinkY)),vb=k.x==n.x?20:0,wb=0,ca=new mxPoint(k.x+vb,k.y+wb),B=new mxPoint(n.x+vb,n.y+wb),ca.generated=!0,B.generated=!0,a.geometry.points=[ca,B],implicitX=k.y==n.y,ca=k.x==n.x);Pb(a,w.Endpoint1,!0,ca);Pb(a,w.Endpoint2,!1,ca)}}}null!=b.id&&Z(a,"lucidchartObjectId",b.id,d)}function ea(a,b){var d=p(a).Properties,d=d.BoundingBox;null==a.Class||"AWS"!==a.Class.substring(0,3)&&"Amazon"!==a.Class.substring(0,6)||a.Class.includes("AWS19")||
+(d.h-=20);v=new mxCell("",new mxGeometry(Math.round(.6*d.x+vb),Math.round(.6*d.y+wb),Math.round(.6*d.w),Math.round(.6*d.h)),"html=1;whiteSpace=wrap;");v.vertex=!0;Eb(v,a,b);if(null!=v&&0<=v.style.indexOf(";grIcon=")){var k=new mxCell("",new mxGeometry(v.geometry.x,v.geometry.y,v.geometry.width,v.geometry.height),"html=1;whiteSpace=wrap;");k.vertex=!0;var n=p(a);null!=n&&(d=null!=n.Properties?n.Properties:n,null!=d&&(k.style+=c(k.style,d,n,k)));v.geometry.x=0;v.geometry.y=0;v.style+="part=1;";k.insert(v);
+v=k}return v}function oa(a,b,d,k){var n=new mxCell("",new mxGeometry(0,0,100,100),"html=1;jettySize=18;");n.geometry.relative=!0;n.edge=!0;Eb(n,a,b,d,k,!0);b=p(a).Properties;d=null!=b?b.TextAreas:a.TextAreas;if(null!=d){for(k=0;null!=d["t"+k];){var c=d["t"+k],n=Ma(c,n);k++}for(k=0;null!=d["m"+k]||1>k;)c=d["m"+k],null!=c&&(n=Ma(c,n,a)),k++;null!=d.Text&&(n=Ma(d.Text,n,a));d=null!=b?b.TextAreas:a.TextAreas;null!=d.Message&&(n=Ma(d.Message,n,a))}return n}function Ma(a,b,d){var k=2*(parseFloat(a.Location)-
+.5);isNaN(k)&&null!=a.Text&&null!=a.Text.Location&&(k=2*(parseFloat(a.Text.Location)-.5));d=mxCell;var c=g(a),k=new mxGeometry(isNaN(k)?0:k,0,0,0),f="11",w="";if(null!=a&&null!=a.Value&&null!=a.Value.m)for(var w=n(a.Value.m),l=0;l<a.Value.m.length;l++)if("s"==a.Value.m[l].n)f=.6*parseFloat(a.Value.m[l].v);else if("c"==a.Value.m[l].n){var y=a.Value.m[l].v;null!=y&&("#"!=y.charAt(0)&&(y="#"+y),y=y.substring(0,7));w+="fontColor="+y+";"}a=new d(c,k,"text;html=1;resizable=0;labelBackgroundColor=#ffffff;align=center;verticalAlign=middle;"+
+(w+";fontSize="+f+";"));a.geometry.relative=!0;a.vertex=!0;b.insert(a);return b}function Va(a,b,d,k){null!=b&&null!=k&&(b=k(b));return null!=b&&b!=d?a+"="+b+";":""}function Pb(a,b,d,k,n){null!=b&&null!=b.LinkX&&null!=b.LinkY&&(a.style+=(k?"":(d?"exitX":"entryX")+"="+b.LinkX+";")+(n?"":(d?"exitY":"entryY")+"="+b.LinkY+";")+(d?"exitPerimeter":"entryPerimeter")+"=1;")}function fa(a,b,d){try{null!=a.Action&&null!=a.Action.Properties&&(a=a.Action.Properties);var k=new mxCell("",new mxGeometry,"group;dropTarget=0;");
+k.vertex=!0;var n=Infinity,c=Infinity,f=-Infinity,w=-Infinity,l=a.Members,y;for(y in l){var z=b[y];null!=z?(n=Math.min(n,z.geometry.x),c=Math.min(c,z.geometry.y),f=Math.max(f,z.geometry.x+z.geometry.width),w=Math.max(w,z.geometry.y+z.geometry.height),z.parent=k,k.insert(z)):d[y]=k}k.geometry.x=n;k.geometry.y=c;k.geometry.width=f-n;k.geometry.height=w-c;for(b=0;b<k.children.length;b++){var g=k.children[b].geometry;g.x-=n;g.y-=c}a.IsState?k.lucidLayerInfo={name:a.Name,visible:!a.Hidden,locked:a.Restrictions.b&&
+a.Restrictions.p&&a.Restrictions.c}:a.Hidden&&(k.visible=!1);return k}catch(Kd){console.log(Kd)}}function Qb(a,b,d,k,n,c){a.getModel().beginUpdate();try{var h=function(b,d){function k(a,b){null==a||a.generated||(a.x-=b.x,a.y-=b.y)}var n=null!=d.Endpoint1.Block?w[d.Endpoint1.Block]:null,c=null!=d.Endpoint2.Block?w[d.Endpoint2.Block]:null,h=oa(b,a,n,c);null==n&&null!=d.Endpoint1&&h.geometry.setTerminalPoint(new mxPoint(Math.round(.6*d.Endpoint1.x),Math.round(.6*d.Endpoint1.y)),!0);null==c&&null!=d.Endpoint2&&
+h.geometry.setTerminalPoint(new mxPoint(Math.round(.6*d.Endpoint2.x),Math.round(.6*d.Endpoint2.y)),!1);var y=l[b.id];if(null!=y){var z=h.geometry,g=y.geometry;k(z.sourcePoint,g);k(z.targetPoint,g);k(z.offset,g);z=z.points;if(null!=z)for(var r=0;r<z.length;r++)k(z[r],g)}f.push(a.addCell(h,y,null,n,c))},f=[],w={},l={},y=[];if(null!=b.Blocks)for(var z in b.Blocks){var g=b.Blocks[z];g.id=z;var A=!1;null!=Fb[g.Class]&&"mxCompositeShape"==Fb[g.Class]&&(w[g.id]=dc(g,f,a),y.push(g),A=!0);A||(w[g.id]=ea(g,
+a),y.push(g))}else{for(var e=0;e<b.Objects.length;e++)g=b.Objects[e],null!=g.Action&&"mxCompositeShape"==Fb[g.Action.Class]?w[g.id]=dc(g,f,a):g.IsBlock&&null!=g.Action&&null!=g.Action.Properties&&(w[g.id]=ea(g,a)),y.push(g);for(e=0;e<b.Objects.length;e++)if(g=b.Objects[e],g.IsGroup){var B=fa(g,w,l);B&&(w[g.id]=B,y.push(g))}}if(null!=b.Groups)try{for(z in b.Groups)if(g=b.Groups[z],g.id=z,B=fa(g,w,l))w[g.id]=B,y.push(g)}catch(bc){console.log(bc)}if(null!=b.Lines)for(z in b.Lines)g=b.Lines[z],g.id=z,
+y.push(g);y.sort(function(a,b){a=p(a);b=p(b);var d=null!=a.Properties?a.Properties.ZOrder:a.ZOrder,k=null!=b.Properties?b.Properties.ZOrder:b.ZOrder;return null!=d&&null!=k?d-k:0});for(e=0;e<y.length;e++){var g=y[e],ca=w[g.id];if(null!=ca){if(null==ca.parent)if(ca.lucidLayerInfo){var C=new mxCell;a.addCell(C,a.model.root);C.setVisible(ca.lucidLayerInfo.visible);ca.lucidLayerInfo.locked&&C.setStyle("locked=1;");C.setValue(ca.lucidLayerInfo.name);delete ca.lucidLayerInfo;a.addCell(ca,C)}else f.push(a.addCell(ca))}else g.IsLine&&
+null!=g.Action&&null!=g.Action.Properties?h(g,g.Action.Properties):null!=g.StrokeStyle&&h(g,g)}if(n&&null!=d&&null!=k){a.isGridEnabled()&&(d=a.snap(d),k=a.snap(k));var E=a.getBoundingBoxFromGeometry(f,!0);null!=E&&a.moveCells(f,d-E.x,k-E.y)}c||a.setSelectionCells(f)}finally{a.getModel().endUpdate()}}function Ea(){var a=new Graph;a.setExtendParents(!1);a.setExtendParentsOnAdd(!1);a.setConstrainChildren(!1);a.setHtmlLabels(!0);a.getModel().maintainEdgeParent=!1;return a}function ob(a,b,d,k,n,c,f,w){a=
+new mxCell("",new mxGeometry(a,b,0,0),"strokeColor=none;fillColor=none;");a.vertex=!0;f.insert(a);c=[a];d=d.clone();w.insertEdge(d,!1);a.insertEdge(d,!0);c.push(d);k.push(n.addCell(d,null,null,null,null))}function sa(a,b,d,k,n,c,f,w,l){a=new mxCell("",new mxGeometry(a,b,0,0),"strokeColor=none;fillColor=none;");a.vertex=!0;l.insert(a);d=new mxCell("",new mxGeometry(d,k,0,0),"strokeColor=none;fillColor=none;");d.vertex=!0;l.insert(d);w=[d];n=n.clone();a.insertEdge(n,!0);d.insertEdge(n,!1);w.push(n);
+c.push(f.addCell(n,null,null,null,null))}function ha(a,b,d,k,n,f){k.style="rounded=1;absoluteArcSize=1;fillColor=#ffffff;arcSize=2;strokeColor=#dddddd;";k.style+=c(k.style,n,f,k);b=g(n);k.vertex=!0;a=new mxCell(b,new mxGeometry(0,.5,24,24),"dashed=0;connectable=0;html=1;strokeColor=none;"+mxConstants.STYLE_SHAPE+"=mxgraph.gcp2."+a+";part=1;shadow=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=5;");a.style+=c(a.style,n,f,a,x);a.geometry.relative=!0;a.geometry.offset=
+new mxPoint(5,-12);a.vertex=!0;k.insert(a)}function la(a,b,d,k,n,f,w,l){n="transparent"!=a?mxConstants.STYLE_SHAPE+"=mxgraph.gcp2.":mxConstants.STYLE_SHAPE+"=";f.style="rounded=1;absoluteArcSize=1;arcSize=2;verticalAlign=bottom;fillColor=#ffffff;strokeColor=#dddddd;whiteSpace=wrap;";f.style+=c(f.style,w,l,f);f.value=g(w);f.vertex=!0;a=new mxCell(null,new mxGeometry(.5,0,.7*k*b,.7*k*d),n+a+";part=1;dashed=0;connectable=0;html=1;strokeColor=none;shadow=0;");a.geometry.relative=!0;a.geometry.offset=
+new mxPoint(-b*k*.35,10+(1-d)*k*.35);a.vertex=!0;a.style+=c(a.style,w,l,a,x);f.insert(a)}function dc(b,n,f){var e=p(b),h=e.Properties,Z=h.BoundingBox,t=Math.round(.6*Z.w),r=Math.round(.6*Z.h),ea=Math.round(.6*Z.x+vb),oa=Math.round(.6*Z.y+wb);null==b.Class||"GCPInputDatabase"!==b.Class&&"GCPInputRecord"!==b.Class&&"GCPInputPayment"!==b.Class&&"GCPInputGateway"!==b.Class&&"GCPInputLocalCompute"!==b.Class&&"GCPInputBeacon"!==b.Class&&"GCPInputStorage"!==b.Class&&"GCPInputList"!==b.Class&&"GCPInputStream"!==
+b.Class&&"GCPInputMobileDevices"!==b.Class&&"GCPInputCircuitBoard"!==b.Class&&"GCPInputLive"!==b.Class&&"GCPInputUsers"!==b.Class&&"GCPInputLaptop"!==b.Class&&"GCPInputApplication"!==b.Class&&"GCPInputLightbulb"!==b.Class&&"GCPInputGame"!==b.Class&&"GCPInputDesktop"!==b.Class&&"GCPInputDesktopAndMobile"!==b.Class&&"GCPInputWebcam"!==b.Class&&"GCPInputSpeaker"!==b.Class&&"GCPInputRetail"!==b.Class&&"GCPInputReport"!==b.Class&&"GCPInputPhone"!==b.Class&&"GCPInputBlank"!==b.Class||(r+=20);v=new mxCell("",
+new mxGeometry(ea,oa,t,r),"html=1;whiteSpace=wrap;");v.vertex=!0;var Pb=null!=b.Class?b.Class:null!=e?e.Class:null;switch(Pb){case "BraceNoteBlock":case "UI2BraceNoteBlock":var Qb=!1;null!=h.BraceDirection&&"Right"==h.BraceDirection&&(Qb=!0);var Ma=null,fa=null;Qb?(Ma=new mxCell("",new mxGeometry(t-.125*r,0,.125*r,r),"shape=curlyBracket;rounded=1;"),fa=new mxCell("",new mxGeometry(0,0,t-.125*r,r),"strokeColor=none;fillColor=none;")):(Ma=new mxCell("",new mxGeometry(0,0,.125*r,r),"shape=curlyBracket;rounded=1;flipH=1;"),
+fa=new mxCell("",new mxGeometry(.125*r,0,t-.125*r,r),"strokeColor=none;fillColor=none;"));v.style="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);Ma.vertex=!0;v.insert(Ma);Ma.style+=c(Ma.style,h,e,Ma);fa.vertex=!0;fa.value=g(h);v.insert(fa);fa.style+=c(fa.style,h,e,fa,x);break;case "BPMNAdvancedPoolBlockRotated":case "UMLMultiLanePoolRotatedBlock":case "UMLMultiLanePoolBlock":case "BPMNAdvancedPoolBlock":case "AdvancedSwimLaneBlockRotated":case "AdvancedSwimLaneBlock":case "UMLSwimLaneBlockV2":var Ea=
+"MainText",nb=null,Fb="HeaderFill_",Gb="BodyFill_",Fc=25,bc=25,cc=0;if(null!=h.Lanes)cc=h.Lanes.length;else if(null!=h.PrimaryLane){for(var jd=function(a){if(a)32>a?a=32:208<a&&(a=208);else return 0;return.6*a},cc=h.PrimaryLane.length,m=r=t=0;m<cc;m++)t+=h.PrimaryLane[m];for(m=0;m<h.SecondaryLane.length;m++)r+=h.SecondaryLane[m];Fc=jd(h.PrimaryPoolTitleHeight);bc=jd(h.PrimaryLaneTitleHeight);t*=.6;r=.6*r+Fc+bc;v.geometry.width=t;v.geometry.height=r;Ea="poolPrimaryTitleKey";Fb="PrimaryLaneHeaderFill_";
+Gb="CellFill_0,";nb=h.PrimaryLaneTextAreaIds;if(null==nb)for(nb=[],m=0;m<cc;m++)nb.push("Primary_"+m)}if(0==h.IsPrimaryLaneVertical){h.Rotation=-1.5707963267948966;var dc=v.geometry.x,Jd=v.geometry.y}var Uc=0!=h.Rotation,ld=0<Pb.indexOf("Pool"),Rc=0==Pb.indexOf("BPMN"),Sc=null!=h[Ea];v.style=(ld?"swimlane;startSize="+Fc+";":"fillColor=none;strokeColor=none;pointerEvents=0;")+"html=1;whiteSpace=wrap;container=1;collapsible=0;childLayout=stackLayout;resizeParent=1;dropTarget=0;"+(Uc?"horizontalStack=0;":
+"");v.style+=c(v.style,h,e,v);Sc&&(v.value=g(h[Ea]),v.style+=(x?"overflow=width;":a(h[Ea])+d(h[Ea])+k(h[Ea])+w(h[Ea],v)+y(h[Ea])+z(h[Ea])+A(h[Ea])+B(h[Ea]))+C(h[Ea])+E(h[Ea]));for(var kd=0,qb=[],Tc="swimlane;html=1;whiteSpace=wrap;container=1;connectable=0;collapsible=0;startSize="+bc+";dropTarget=0;rounded=0;"+(Uc?"horizontal=0;":"")+(Rc?"swimlaneLine=0;fillColor=none;":""),Q=h.Rotation=0;Q<cc;Q++){if(null==nb)var Gc=parseFloat(h.Lanes[Q].p),m=parseInt(h.Lanes[Q].tid)||Q,Pa="Lane_"+m;else Gc=.6*
+h.PrimaryLane[Q]/t,m=Q,Pa=nb[Q];var md=t*kd,Hc=ld?Fc:0;qb.push(new mxCell("",Uc?new mxGeometry(Hc,md,r-Hc,t*Gc):new mxGeometry(md,Hc,t*Gc,r-Hc),Tc));qb[Q].vertex=!0;v.insert(qb[Q]);qb[Q].value=g(h[Pa]);qb[Q].style+=c(qb[Q].style,h,e,qb[Q],x)+(x?"":a(h[Pa])+d(h[Pa])+k(h[Pa])+w(h[Pa],qb[Q])+y(h[Pa])+z(h[Pa])+A(h[Pa])+B(h[Pa]))+C(h[Pa])+E(h[Pa])+G(h[Fb+m])+T(h[Gb+m]);kd+=Gc}null!=dc&&(v.geometry.x=dc,v.geometry.y=Jd);break;case "UMLMultidimensionalSwimlane":var Hb=0,Ib=0,Vc=null,Wc=null;if(null!=h.Rows&&
+null!=h.Columns)var Hb=h.Rows.length,Ib=h.Columns.length,ec=.6*h.TitleHeight||25,fc=.6*h.TitleWidth||25;else if(null!=h.PrimaryLane&&null!=h.SecondaryLane){Hb=h.SecondaryLane.length;Ib=h.PrimaryLane.length;fc=.6*h.SecondaryLaneTitleHeight||25;ec=.6*h.PrimaryLaneTitleHeight||25;for(m=r=t=0;m<Hb;m++)r+=h.SecondaryLane[m];for(m=0;m<Ib;m++)t+=h.PrimaryLane[m];t=.6*t+fc;r=.6*r+ec;v.geometry.width=t;v.geometry.height=r;Vc=h.SecondaryLaneTextAreaIds;Wc=h.PrimaryLaneTextAreaIds}v.style="group;";var Xc=new mxCell("",
+new mxGeometry(0,ec,t,r-ec),"fillColor=none;strokeColor=none;html=1;whiteSpace=wrap;container=1;collapsible=0;childLayout=stackLayout;resizeParent=1;dropTarget=0;horizontalStack=0;");Xc.vertex=!0;var Yc=new mxCell("",new mxGeometry(fc,0,t-fc,r),"fillColor=none;strokeColor=none;html=1;whiteSpace=wrap;container=1;collapsible=0;childLayout=stackLayout;resizeParent=1;dropTarget=0;");Yc.vertex=!0;v.insert(Xc);v.insert(Yc);for(var oa=0,Nd="swimlane;html=1;whiteSpace=wrap;container=1;connectable=0;collapsible=0;dropTarget=0;horizontal=0;startSize="+
+fc+";",Q=0;Q<Hb;Q++){if(null==Vc)var Zc=.6*parseInt(h.Rows[Q].height),m=parseInt(h.Rows[Q].id)||Q,Qa="Row_"+m;else Zc=.6*h.SecondaryLane[Q],Qa=Vc[Q];var xb=new mxCell("",new mxGeometry(0,oa,t,Zc),Nd),oa=oa+Zc;xb.vertex=!0;Xc.insert(xb);xb.value=g(h[Qa]);xb.style+=c(xb.style,h,e,xb,x)+(x?"":a(h[Qa])+d(h[Qa])+k(h[Qa])+w(h[Qa],xb)+y(h[Qa])+z(h[Qa])+A(h[Qa])+B(h[Qa]))+C(h[Qa])+E(h[Qa])}for(var Od="swimlane;html=1;whiteSpace=wrap;container=1;connectable=0;collapsible=0;dropTarget=0;startSize="+ec+";",
+Q=ea=0;Q<Ib;Q++){if(null==Wc)var Rb=.6*parseInt(h.Columns[Q].width),m=parseInt(h.Columns[Q].id)||Q,Ra="Column_"+m;else Rb=.6*h.PrimaryLane[Q],Ra=Wc[Q];var yb=new mxCell("",new mxGeometry(ea,0,Rb,r),Od),ea=ea+Rb;yb.vertex=!0;Yc.insert(yb);yb.value=g(h[Ra]);yb.style+=c(yb.style,h,e,yb,x)+(x?"":a(h[Ra])+d(h[Ra])+k(h[Ra])+w(h[Ra],yb)+y(h[Ra])+z(h[Ra])+A(h[Ra])+B(h[Ra]))+C(h[Ra])+E(h[Ra])}break;case "AndroidDevice":if(null!=h.AndroidDeviceName){v.style="fillColor=#000000;strokeColor=#000000;";var zb=null,
+gc=null,hc=null;if("Tablet"==h.AndroidDeviceName||"Mini Tablet"==h.AndroidDeviceName)v.style+="shape=mxgraph.android.tab2;",zb=new mxCell("",new mxGeometry(.112*t,.077*r,.77*t,.85*r),""),h.KeyboardShown&&(gc=new mxCell("",new mxGeometry(.112*t,.727*r,.77*t,.2*r),"shape=mxgraph.android.keyboard;")),h.FullScreen||(hc=new mxCell("",new mxGeometry(.112*t,.077*r,.77*t,.03*r),"shape=mxgraph.android.statusBar;strokeColor=#33b5e5;fillColor=#000000;fontColor=#33b5e5;fontSize="+.015*r+";"));else if("Large Phone"==
+h.AndroidDeviceName||"Phone"==h.AndroidDeviceName)v.style+="shape=mxgraph.android.phone2;",zb=new mxCell("",new mxGeometry(.04*t,.092*r,.92*t,.816*r),""),h.KeyboardShown&&(gc=new mxCell("",new mxGeometry(.04*t,.708*r,.92*t,.2*r),"shape=mxgraph.android.keyboard;")),h.FullScreen||(hc=new mxCell("",new mxGeometry(.04*t,.092*r,.92*t,.03*r),"shape=mxgraph.android.statusBar;strokeColor=#33b5e5;fillColor=#000000;fontColor=#33b5e5;fontSize="+.015*r+";"));zb.vertex=!0;v.insert(zb);"Dark"==h.Scheme?zb.style+=
+"fillColor=#111111;":"Light"==h.Scheme&&(zb.style+="fillColor=#ffffff;");null!=gc&&(gc.vertex=!0,v.insert(gc));null!=hc&&(hc.vertex=!0,v.insert(hc))}v.style+=c(v.style,h,e,v);break;case "AndroidAlertDialog":var Wa=new mxCell("",new mxGeometry(0,0,t,30),"strokeColor=none;fillColor=none;spacingLeft=9;");Wa.vertex=!0;v.insert(Wa);var qa=new mxCell("",new mxGeometry(0,25,t,10),"shape=line;strokeColor=#33B5E5;");qa.vertex=!0;v.insert(qa);var ic=new mxCell("",new mxGeometry(0,30,t,r-30),"strokeColor=none;fillColor=none;verticalAlign=top;");
+ic.vertex=!0;v.insert(ic);var ua=new mxCell("",new mxGeometry(0,r-25,.5*t,25),"fillColor=none;");ua.vertex=!0;v.insert(ua);var va=new mxCell("",new mxGeometry(.5*t,r-25,.5*t,25),"fillColor=none;");va.vertex=!0;v.insert(va);Wa.value=g(h.DialogTitle);Wa.style+=l(h.DialogTitle,x);ic.value=g(h.DialogText);ic.style+=l(h.DialogText,x);ua.value=g(h.Button_0);ua.style+=l(h.Button_0,x);va.value=g(h.Button_1);va.style+=l(h.Button_1,x);"Dark"==h.Scheme?(v.style+="strokeColor=#353535;fillColor=#282828;shadow=1;",
+ua.style+="strokeColor=#353535;",va.style+="strokeColor=#353535;"):(v.style+="strokeColor=none;fillColor=#ffffff;shadow=1;",ua.style+="strokeColor=#E2E2E2;",va.style+="strokeColor=#E2E2E2;");v.style+=c(v.style,h,e,v);break;case "AndroidDateDialog":case "AndroidTimeDialog":Wa=new mxCell("",new mxGeometry(0,0,t,30),"strokeColor=none;fillColor=none;spacingLeft=9;");Wa.vertex=!0;v.insert(Wa);Wa.value=g(h.DialogTitle);Wa.style+=l(h.DialogTitle,x);qa=new mxCell("",new mxGeometry(0,25,t,10),"shape=line;strokeColor=#33B5E5;");
+qa.vertex=!0;v.insert(qa);ua=new mxCell("",new mxGeometry(0,r-25,.5*t,25),"fillColor=none;");ua.vertex=!0;v.insert(ua);ua.value=g(h.Button_0);ua.style+=l(h.Button_0,x);va=new mxCell("",new mxGeometry(.5*t,r-25,.5*t,25),"fillColor=none;");va.vertex=!0;v.insert(va);va.value=g(h.Button_1);va.style+=l(h.Button_1,x);var Sb=new mxCell("",new mxGeometry(.5*t-4,41,8,4),"shape=triangle;direction=north;");Sb.vertex=!0;v.insert(Sb);var Tb=new mxCell("",new mxGeometry(.25*t-4,41,8,4),"shape=triangle;direction=north;");
+Tb.vertex=!0;v.insert(Tb);var Ub=new mxCell("",new mxGeometry(.75*t-4,41,8,4),"shape=triangle;direction=north;");Ub.vertex=!0;v.insert(Ub);var jc=new mxCell("",new mxGeometry(.375*t,50,.2*t,15),"strokeColor=none;fillColor=none;");jc.vertex=!0;v.insert(jc);jc.value=g(h.Label_1);jc.style+=l(h.Label_1,x);var kc=new mxCell("",new mxGeometry(.125*t,50,.2*t,15),"strokeColor=none;fillColor=none;");kc.vertex=!0;v.insert(kc);kc.value=g(h.Label_0);kc.style+=l(h.Label_0,x);var Vb=null;"AndroidDateDialog"==b.Class&&
+(Vb=new mxCell("",new mxGeometry(.625*t,50,.2*t,15),"strokeColor=none;fillColor=none;"),Vb.vertex=!0,v.insert(Vb),Vb.value=g(h.Label_2),Vb.style+=l(h.Label_2,x));var Xa=new mxCell("",new mxGeometry(.43*t,60,.14*t,10),"shape=line;strokeColor=#33B5E5;");Xa.vertex=!0;v.insert(Xa);var Ya=new mxCell("",new mxGeometry(.18*t,60,.14*t,10),"shape=line;strokeColor=#33B5E5;");Ya.vertex=!0;v.insert(Ya);var nd=new mxCell("",new mxGeometry(.68*t,60,.14*t,10),"shape=line;strokeColor=#33B5E5;");nd.vertex=!0;v.insert(nd);
+var lc=new mxCell("",new mxGeometry(.375*t,65,.2*t,15),"strokeColor=none;fillColor=none;");lc.vertex=!0;v.insert(lc);lc.value=g(h.Label_4);lc.style+=l(h.Label_4,x);var Wb=null;"AndroidTimeDialog"==b.Class&&(Wb=new mxCell("",new mxGeometry(.3*t,65,.1*t,15),"strokeColor=none;fillColor=none;"),Wb.vertex=!0,v.insert(Wb),Wb.value=g(h.Label_Colon),Wb.style+=l(h.Label_Colon,x));var mc=new mxCell("",new mxGeometry(.125*t,65,.2*t,15),"strokeColor=none;fillColor=none;");mc.vertex=!0;v.insert(mc);mc.value=g(h.Label_3);
+mc.style+=l(h.Label_3,x);var nc=new mxCell("",new mxGeometry(.625*t,65,.2*t,15),"strokeColor=none;fillColor=none;");nc.vertex=!0;v.insert(nc);nc.value=g(h.Label_5);nc.style+=l(h.Label_5,x);var od=new mxCell("",new mxGeometry(.43*t,75,.14*t,10),"shape=line;strokeColor=#33B5E5;");od.vertex=!0;v.insert(od);var pd=new mxCell("",new mxGeometry(.18*t,75,.14*t,10),"shape=line;strokeColor=#33B5E5;");pd.vertex=!0;v.insert(pd);var qd=new mxCell("",new mxGeometry(.68*t,75,.14*t,10),"shape=line;strokeColor=#33B5E5;");
+qd.vertex=!0;v.insert(qd);var oc=new mxCell("",new mxGeometry(.375*t,80,.2*t,15),"strokeColor=none;fillColor=none;");oc.vertex=!0;v.insert(oc);oc.value=g(h.Label_7);oc.style+=l(h.Label_7,x);var pc=new mxCell("",new mxGeometry(.125*t,80,.2*t,15),"strokeColor=none;fillColor=none;");pc.vertex=!0;v.insert(pc);pc.value=g(h.Label_6);pc.style+=l(h.Label_6,x);var qc=new mxCell("",new mxGeometry(.625*t,80,.2*t,15),"strokeColor=none;fillColor=none;");qc.vertex=!0;v.insert(qc);qc.value=g(h.Label_8);qc.style+=
+l(h.Label_8,x);var Xb=new mxCell("",new mxGeometry(.5*t-4,99,8,4),"shape=triangle;direction=south;");Xb.vertex=!0;v.insert(Xb);var Yb=new mxCell("",new mxGeometry(.25*t-4,99,8,4),"shape=triangle;direction=south;");Yb.vertex=!0;v.insert(Yb);var Zb=new mxCell("",new mxGeometry(.75*t-4,99,8,4),"shape=triangle;direction=south;");Zb.vertex=!0;v.insert(Zb);"Dark"==h.Scheme?(v.style+="strokeColor=#353535;fillColor=#282828;shadow=1;",ua.style+="strokeColor=#353535;",va.style+="strokeColor=#353535;",Sb.style+=
+"strokeColor=none;fillColor=#7E7E7E;",Tb.style+="strokeColor=none;fillColor=#7E7E7E;",Ub.style+="strokeColor=none;fillColor=#7E7E7E;",Xb.style+="strokeColor=none;fillColor=#7E7E7E;",Yb.style+="strokeColor=none;fillColor=#7E7E7E;",Zb.style+="strokeColor=none;fillColor=#7E7E7E;"):(v.style+="strokeColor=none;fillColor=#ffffff;shadow=1;",ua.style+="strokeColor=#E2E2E2;",va.style+="strokeColor=#E2E2E2;",Sb.style+="strokeColor=none;fillColor=#939393;",Tb.style+="strokeColor=none;fillColor=#939393;",Ub.style+=
+"strokeColor=none;fillColor=#939393;",Xb.style+="strokeColor=none;fillColor=#939393;",Yb.style+="strokeColor=none;fillColor=#939393;",Zb.style+="strokeColor=none;fillColor=#939393;");v.style+=c(v.style,h,e,v);break;case "AndroidListItems":var Ca=r,rb=0;if(h.ShowHeader){var rb=8,rc=new mxCell("",new mxGeometry(0,0,t,rb),"strokeColor=none;fillColor=none;");rc.vertex=!0;v.insert(rc);rc.value=g(h.Header);rc.style+=l(h.Header,x);var Ca=Ca-rb,rd=new mxCell("",new mxGeometry(0,rb-2,t,4),"shape=line;strokeColor=#999999;");
+rd.vertex=!0;v.insert(rd)}var Za=parseInt(h.Items);0<Za&&(Ca/=Za);for(var H=[],qa=[],m=0;m<Za;m++)H[m]=new mxCell("",new mxGeometry(0,rb+m*Ca,t,Ca),"strokeColor=none;fillColor=none;"),H[m].vertex=!0,v.insert(H[m]),H[m].value=g(h["Item_"+m]),H[m].style+=l(h["Item_"+m],x),0<m&&(qa[m]=new mxCell("",new mxGeometry(0,rb+m*Ca-2,t,4),"shape=line;"),qa[m].vertex=!0,v.insert(qa[m]),qa[m].style="Dark"==h.Scheme?qa[m].style+"strokeColor=#ffffff;":qa[m].style+"strokeColor=#D9D9D9;");v.style="Dark"==h.Scheme?
+v.style+"strokeColor=none;fillColor=#111111;":v.style+"strokeColor=none;fillColor=#ffffff;";v.style+=c(v.style,h,e,v);break;case "AndroidTabs":var $a=parseInt(h.Tabs),Ia=t;0<$a&&(Ia/=$a);for(var ia=[],qa=[],m=0;m<$a;m++)ia[m]=new mxCell("",new mxGeometry(m*Ia,0,Ia,r),"strokeColor=none;fillColor=none;"),ia[m].vertex=!0,v.insert(ia[m]),ia[m].value=g(h["Tab_"+m]),ia[m].style+=l(h["Tab_"+m],x),0<m&&(qa[m]=new mxCell("",new mxGeometry(m*Ia-2,.2*r,4,.6*r),"shape=line;direction=north;"),qa[m].vertex=!0,
+v.insert(qa[m]),qa[m].style="Dark"==h.Scheme?qa[m].style+"strokeColor=#484848;":qa[m].style+"strokeColor=#CCCCCC;");var sd=new mxCell("",new mxGeometry(h.Selected*Ia+2,r-3,Ia-4,3),"strokeColor=none;fillColor=#33B5E5;");sd.vertex=!0;v.insert(sd);v.style="Dark"==h.Scheme?v.style+"strokeColor=none;fillColor=#333333;":v.style+"strokeColor=none;fillColor=#DDDDDD;";v.style+=c(v.style,h,e,v);break;case "AndroidProgressBar":v=new mxCell("",new mxGeometry(Math.round(ea),Math.round(oa+.25*r),Math.round(t),
+Math.round(.5*r)),"html=1;whiteSpace=wrap;");v.vertex=!0;var sc=new mxCell("",new mxGeometry(0,0,t*h.BarPosition,Math.round(.5*r)),"strokeColor=none;fillColor=#33B5E5;");sc.vertex=!0;v.insert(sc);v.style="Dark"==h.Scheme?v.style+"strokeColor=none;fillColor=#474747;":v.style+"strokeColor=none;fillColor=#BBBBBB;";v.style+=c(v.style,h,e,v);break;case "AndroidImageBlock":v.style="Dark"==h.Scheme?v.style+"shape=mxgraph.mockup.graphics.simpleIcon;strokeColor=#7E7E7E;fillColor=#111111;":v.style+"shape=mxgraph.mockup.graphics.simpleIcon;strokeColor=#939393;fillColor=#ffffff;";
+v.style+=c(v.style,h,e,v);break;case "AndroidTextBlock":v.style="Dark"==h.Scheme?h.ShowBorder?v.style+"fillColor=#111111;strokeColor=#ffffff;":v.style+"fillColor=#111111;strokeColor=none;":h.ShowBorder?v.style+"fillColor=#ffffff;strokeColor=#000000;":v.style+"fillColor=#ffffff;strokeColor=none;";v.value=g(h.Label);v.style+=l(h.Label,x);v.style+=c(v.style,h,e,v,x);break;case "AndroidActionBar":v.style+="strokeColor=none;";switch(h.BarBackground){case "Blue":v.style+="fillColor=#002E3E;";break;case "Gray":v.style+=
+"fillColor=#DDDDDD;";break;case "Dark Gray":v.style+="fillColor=#474747;";break;case "White":v.style+="fillColor=#ffffff;"}if(h.HighlightShow){var sb=null,sb=h.HighlightTop?new mxCell("",new mxGeometry(0,0,t,2),"strokeColor=none;"):new mxCell("",new mxGeometry(0,r-2,t,2),"strokeColor=none;");sb.vertex=!0;v.insert(sb);switch(h.HighlightColor){case "Blue":sb.style+="fillColor=#33B5E5;";break;case "Dark Gray":sb.style+="fillColor=#B0B0B0;";break;case "White":sb.style+="fillColor=#ffffff;"}}if(h.VlignShow){var $b=
+new mxCell("",new mxGeometry(20,5,2,r-10),"shape=line;direction=north;");$b.vertex=!0;v.insert($b);switch(h.VlignColor){case "Blue":$b.style+="strokeColor=#244C5A;";break;case "White":$b.style+="strokeColor=#ffffff;"}}v.style+=c(v.style,h,e,v);break;case "AndroidButton":v.value=g(h.Label);v.style+=l(h.Label,x)+"shape=partialRectangle;left=0;right=0;";v.style="Dark"==h.Scheme?v.style+"fillColor=#474747;strokeColor=#C6C5C6;bottom=0;":v.style+"fillColor=#DFE0DF;strokeColor=#C6C5C6;top=0;";v.style+=c(v.style,
+h,e,v);break;case "AndroidTextBox":v.value=g(h.Label);v.style+=l(h.Label,x);var tc=new mxCell("",new mxGeometry(2,r-6,t-4,4),"shape=partialRectangle;top=0;fillColor=none;");tc.vertex=!0;v.insert(tc);v.style="Dark"==h.Scheme?v.style+"fillColor=#111111;strokeColor=none;":v.style+"fillColor=#ffffff;strokeColor=none;";tc.style=h.TextFocused?tc.style+"strokeColor=#33B5E5;":tc.style+"strokeColor=#A9A9A9;";v.style+=c(v.style,h,e,v);break;case "AndroidRadioButton":var Jb=null;h.Checked&&(Jb=new mxCell("",
+new mxGeometry(.15*t,.15*r,.7*t,.7*r),"shape=ellipse;fillColor=#33B5E5;strokeWidth=1;"),Jb.vertex=!0,v.insert(Jb));"Dark"==h.Scheme?(v.style+="shape=ellipse;strokeWidth=1;strokeColor=#272727;",h.Checked?(Jb.style+="strokeColor=#1F5C73;",v.style+="fillColor=#193C49;"):v.style+="fillColor=#111111;"):(v.style+="shape=ellipse;strokeWidth=1;fillColor=#ffffff;strokeColor=#5C5C5C;",h.Checked&&(Jb.style+="strokeColor=#999999;"));v.style+=c(v.style,h,e,v);break;case "AndroidCheckBox":var $c=null;h.Checked&&
+($c=new mxCell("",new mxGeometry(.25*t,.05*-r,t,.8*r),"shape=mxgraph.ios7.misc.check;strokeColor=#33B5E5;strokeWidth=2;"),$c.vertex=!0,v.insert($c));v.style="Dark"==h.Scheme?v.style+"strokeWidth=1;strokeColor=#272727;fillColor=#111111;":v.style+"strokeWidth=1;strokeColor=#5C5C5C;fillColor=#ffffff;";v.style+=c(v.style,h,e,v);break;case "AndroidToggle":v.style="Dark"==h.Scheme?h.Checked?v.style+"shape=mxgraph.android.switch_on;fillColor=#666666;":v.style+"shape=mxgraph.android.switch_off;fillColor=#666666;":
+h.Checked?v.style+"shape=mxgraph.android.switch_on;fillColor=#E6E6E6;":v.style+"shape=mxgraph.android.switch_off;fillColor=#E6E6E6;";v.style+=c(v.style,h,e,v);break;case "AndroidSlider":v.style+="shape=mxgraph.android.progressScrubberFocused;dx="+h.BarPosition+";fillColor=#33b5e5;";v.style+=c(v.style,h,e,v);break;case "iOSSegmentedControl":$a=parseInt(h.Tabs);Ia=t;v.style+="strokeColor=none;fillColor=none;";0<$a&&(Ia/=$a);ia=[];qa=[];for(m=0;m<$a;m++)ia[m]=new mxCell("",new mxGeometry(m*Ia,0,Ia,r),
+"strokeColor="+h.FillColor+";"),ia[m].vertex=!0,v.insert(ia[m]),ia[m].value=g(h["Tab_"+m]),ia[m].style+=l(h["Tab_"+m],x),ia[m].style=h.Selected==m?ia[m].style+O(h,e):ia[m].style+"fillColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSSlider":v.style+="shape=mxgraph.ios7ui.slider;strokeColor="+h.FillColor+";fillColor=#ffffff;strokeWidth=2;barPos="+100*h.BarPosition+";";v.style+=c(v.style,h,e,v);break;case "iOSProgressBar":v=new mxCell("",new mxGeometry(Math.round(ea),Math.round(oa+.25*r),Math.round(t),
+Math.round(.5*r)),"html=1;whiteSpace=wrap;strokeColor=none;fillColor=#B5B5B5;");v.vertex=!0;sc=new mxCell("",new mxGeometry(0,0,t*h.BarPosition,Math.round(.5*r)),"strokeColor=none;"+O(h,e));sc.vertex=!0;v.insert(sc);v.style+=c(v.style,h,e,v);break;case "iOSPageControls":v.style+="shape=mxgraph.ios7ui.pageControl;strokeColor=#D6D6D6;";v.style+=c(v.style,h,e,v);break;case "iOSStatusBar":v.style+="shape=mxgraph.ios7ui.appBar;strokeColor=#000000;";var U=new mxCell(g(h.Text),new mxGeometry(.35*t,0,.3*
+t,r),"strokeColor=none;fillColor=none;");U.vertex=!0;v.insert(U);U.style+=l(h.Text,x);var Fa=new mxCell(g(h.Carrier),new mxGeometry(.09*t,0,.2*t,r),"strokeColor=none;fillColor=none;");Fa.vertex=!0;v.insert(Fa);Fa.style+=l(h.Carrier,x);v.style+=c(v.style,h,e,v);break;case "iOSSearchBar":v.value=g(h.Search);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v,x)+l(h.Search,x);var Y=new mxCell("",new mxGeometry(.3*t,.3*r,.4*r,.4*r),"shape=mxgraph.ios7.icons.looking_glass;strokeColor=#000000;fillColor=none;");
+Y.vertex=!0;v.insert(Y);break;case "iOSNavBar":v.value=g(h.Title);v.style+="shape=partialRectangle;top=0;right=0;left=0;strokeColor=#979797;";+l(h.Title,x);v.style+=c(v.style,h,e,v,x);U=new mxCell(g(h.LeftText),new mxGeometry(.03*t,0,.3*t,r),"strokeColor=none;fillColor=none;");U.vertex=!0;v.insert(U);U.style+=l(h.LeftText,x);Fa=new mxCell(g(h.RightText),new mxGeometry(.65*t,0,.3*t,r),"strokeColor=none;fillColor=none;");Fa.vertex=!0;v.insert(Fa);Fa.style+=l(h.RightText,x);Y=new mxCell("",new mxGeometry(.02*
+t,.2*r,.3*r,.5*r),"shape=mxgraph.ios7.misc.left;strokeColor=#007AFF;strokeWidth=2;");Y.vertex=!0;v.insert(Y);break;case "iOSTabs":$a=parseInt(h.Tabs);Ia=t;v.style+="shape=partialRectangle;right=0;left=0;bottom=0;strokeColor=#979797;";v.style+=c(v.style,h,e,v);0<$a&&(Ia/=$a);ia=[];qa=[];for(m=0;m<$a;m++)ia[m]=new mxCell("",new mxGeometry(m*Ia,0,Ia,r),"strokeColor=none;"),ia[m].vertex=!0,v.insert(ia[m]),ia[m].value=g(h["Tab_"+m]),ia[m].style+=x?"overflow=width;html=1;":a(h["Tab_"+m])+d(h["Tab_"+m])+
+k(h["Tab_"+m])+w(h["Tab_"+m])+y(h["Tab_"+m])+z(h["Tab_"+m])+A(h["Tab_"+m])+B(h["Tab_"+m])+C(h["Tab_"+m]),ia[m].style+="verticalAlign=bottom;",ia[m].style=h.Selected==m?ia[m].style+"fillColor=#BBBBBB;":ia[m].style+"fillColor=none;";break;case "iOSDatePicker":var ab=new mxCell("",new mxGeometry(0,0,.5*t,.2*r),"strokeColor=none;fillColor=none;");ab.vertex=!0;v.insert(ab);ab.value=g(h.Option11);ab.style+=l(h.Option11,x);var bb=new mxCell("",new mxGeometry(.5*t,0,.15*t,.2*r),"strokeColor=none;fillColor=none;");
+bb.vertex=!0;v.insert(bb);bb.value=g(h.Option21);bb.style+=l(h.Option21,x);var cb=new mxCell("",new mxGeometry(.65*t,0,.15*t,.2*r),"strokeColor=none;fillColor=none;");cb.vertex=!0;v.insert(cb);cb.value=g(h.Option31);cb.style+=l(h.Option31,x);var db=new mxCell("",new mxGeometry(0,.2*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");db.vertex=!0;v.insert(db);db.value=g(h.Option12);db.style+=l(h.Option12,x);var eb=new mxCell("",new mxGeometry(.5*t,.2*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
+eb.vertex=!0;v.insert(eb);eb.value=g(h.Option22);eb.style+=l(h.Option22,x);var fb=new mxCell("",new mxGeometry(.65*t,.2*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");fb.vertex=!0;v.insert(fb);fb.value=g(h.Option32);fb.style+=l(h.Option32,x);var wa=new mxCell("",new mxGeometry(0,.4*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");wa.vertex=!0;v.insert(wa);wa.value=g(h.Option13);wa.style+=l(h.Option13,x);var xa=new mxCell("",new mxGeometry(.5*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
+xa.vertex=!0;v.insert(xa);xa.value=g(h.Option23);xa.style+=l(h.Option23,x);var gb=new mxCell("",new mxGeometry(.65*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");gb.vertex=!0;v.insert(gb);gb.value=g(h.Option33);gb.style+=l(h.Option33,x);var ya=new mxCell("",new mxGeometry(.8*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");ya.vertex=!0;v.insert(ya);ya.value=g(h.Option43);ya.style+=l(h.Option43,x);var za=new mxCell("",new mxGeometry(0,.6*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");
+za.vertex=!0;v.insert(za);za.value=g(h.Option14);za.style+=l(h.Option14,x);var hb=new mxCell("",new mxGeometry(.5*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");hb.vertex=!0;v.insert(hb);hb.value=g(h.Option24);hb.style+=l(h.Option24,x);var ib=new mxCell("",new mxGeometry(.65*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");ib.vertex=!0;v.insert(ib);ib.value=g(h.Option34);ib.style+=l(h.Option34,x);var jb=new mxCell("",new mxGeometry(.8*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
+jb.vertex=!0;v.insert(jb);jb.value=g(h.Option44);jb.style+=l(h.Option44,x);var Aa=new mxCell("",new mxGeometry(0,.8*r,.5*t,.2*r),"strokeColor=none;fillColor=none;");Aa.vertex=!0;v.insert(Aa);Aa.value=g(h.Option15);Aa.style+=l(h.Option15,x);var kb=new mxCell("",new mxGeometry(.5*t,.8*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");kb.vertex=!0;v.insert(kb);kb.value=g(h.Option25);kb.style+=l(h.Option25,x);var lb=new mxCell("",new mxGeometry(.65*t,.8*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");
+lb.vertex=!0;v.insert(lb);lb.value=g(h.Option35);lb.style+=l(h.Option35,x);Xa=new mxCell("",new mxGeometry(0,.4*r-2,t,4),"shape=line;strokeColor=#888888;");Xa.vertex=!0;v.insert(Xa);Ya=new mxCell("",new mxGeometry(0,.6*r-2,t,4),"shape=line;strokeColor=#888888;");Ya.vertex=!0;v.insert(Ya);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSTimePicker":ab=new mxCell("",new mxGeometry(0,0,.25*t,.2*r),"strokeColor=none;fillColor=none;");ab.vertex=!0;v.insert(ab);ab.value=g(h.Option11);
+ab.style+=l(h.Option11,x);bb=new mxCell("",new mxGeometry(.25*t,0,.3*t,.2*r),"strokeColor=none;fillColor=none;");bb.vertex=!0;v.insert(bb);bb.value=g(h.Option21);bb.style+=l(h.Option21,x);db=new mxCell("",new mxGeometry(0,.2*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");db.vertex=!0;v.insert(db);db.value=g(h.Option12);db.style+=l(h.Option12,x);eb=new mxCell("",new mxGeometry(.25*t,.2*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");eb.vertex=!0;v.insert(eb);eb.value=g(h.Option22);eb.style+=l(h.Option22,
+x);wa=new mxCell("",new mxGeometry(0,.4*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");wa.vertex=!0;v.insert(wa);wa.value=g(h.Option13);wa.style+=l(h.Option13,x);xa=new mxCell("",new mxGeometry(.25*t,.4*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");xa.vertex=!0;v.insert(xa);xa.value=g(h.Option23);xa.style+=l(h.Option23,x);ya=new mxCell("",new mxGeometry(.7*t,.4*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");ya.vertex=!0;v.insert(ya);ya.value=g(h.Option33);ya.style+=l(h.Option33,x);za=new mxCell("",
+new mxGeometry(0,.6*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");za.vertex=!0;v.insert(za);za.value=g(h.Option14);za.style+=l(h.Option14,x);hb=new mxCell("",new mxGeometry(.25*t,.6*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");hb.vertex=!0;v.insert(hb);hb.value=g(h.Option24);hb.style+=l(h.Option24,x);jb=new mxCell("",new mxGeometry(.7*t,.6*r,.15*t,.2*r),"strokeColor=none;fillColor=none;");jb.vertex=!0;v.insert(jb);jb.value=g(h.Option34);jb.style+=l(h.Option34,x);Aa=new mxCell("",new mxGeometry(0,
+.8*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");Aa.vertex=!0;v.insert(Aa);Aa.value=g(h.Option15);Aa.style+=l(h.Option15,x);kb=new mxCell("",new mxGeometry(.25*t,.8*r,.3*t,.2*r),"strokeColor=none;fillColor=none;");kb.vertex=!0;v.insert(kb);kb.value=g(h.Option25);kb.style+=l(h.Option25,x);Xa=new mxCell("",new mxGeometry(0,.4*r-2,t,4),"shape=line;strokeColor=#888888;");Xa.vertex=!0;v.insert(Xa);Ya=new mxCell("",new mxGeometry(0,.6*r-2,t,4),"shape=line;strokeColor=#888888;");Ya.vertex=!0;v.insert(Ya);
+v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSCountdownPicker":cb=new mxCell("",new mxGeometry(.45*t,0,.2*t,.2*r),"strokeColor=none;fillColor=none;");cb.vertex=!0;v.insert(cb);cb.value=g(h.Option31);cb.style+=l(h.Option31,x);fb=new mxCell("",new mxGeometry(.45*t,.2*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");fb.vertex=!0;v.insert(fb);fb.value=g(h.Option32);fb.style+=l(h.Option32,x);wa=new mxCell("",new mxGeometry(0,.4*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");
+wa.vertex=!0;v.insert(wa);wa.value=g(h.Option13);wa.style+=l(h.Option13,x);xa=new mxCell("",new mxGeometry(.2*t,.4*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");xa.vertex=!0;v.insert(xa);xa.value=g(h.Option23);xa.style+=l(h.Option23,x);gb=new mxCell("",new mxGeometry(.45*t,.4*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");gb.vertex=!0;v.insert(gb);gb.value=g(h.Option33);gb.style+=l(h.Option33,x);ya=new mxCell("",new mxGeometry(.6*t,.4*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");ya.vertex=
+!0;v.insert(ya);ya.value=g(h.Option43);ya.style+=l(h.Option43,x);za=new mxCell("",new mxGeometry(0,.6*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");za.vertex=!0;v.insert(za);za.value=g(h.Option14);za.style+=l(h.Option14,x);ib=new mxCell("",new mxGeometry(.45*t,.6*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");ib.vertex=!0;v.insert(ib);ib.value=g(h.Option34);ib.style+=l(h.Option34,x);Aa=new mxCell("",new mxGeometry(0,.8*r,.25*t,.2*r),"strokeColor=none;fillColor=none;");Aa.vertex=!0;v.insert(Aa);
+Aa.value=g(h.Option15);Aa.style+=l(h.Option15,x);lb=new mxCell("",new mxGeometry(.45*t,.8*r,.2*t,.2*r),"strokeColor=none;fillColor=none;");lb.vertex=!0;v.insert(lb);lb.value=g(h.Option35);lb.style+=l(h.Option35,x);Xa=new mxCell("",new mxGeometry(0,.4*r-2,t,4),"shape=line;strokeColor=#888888;");Xa.vertex=!0;v.insert(Xa);Ya=new mxCell("",new mxGeometry(0,.6*r-2,t,4),"shape=line;strokeColor=#888888;");Ya.vertex=!0;v.insert(Ya);v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);break;case "iOSBasicCell":v.value=
+g(h.text);v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;spacing=0;align=left;spacingLeft="+.6*h.SeparatorInset+";";v.style+=(x?"":a(h.text)+d(h.text)+k(h.text))+E(h.text);v.style+=c(v.style,h,e,v,x);switch(h.AccessoryIndicatorType){case "Disclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,
+.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);var pa=new mxCell("",new mxGeometry(.79*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "DetailIndicator":pa=new mxCell("",new mxGeometry(.87*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*
+r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;"),Y.vertex=!0,v.insert(Y)}break;case "iOSSubtitleCell":v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;align=left;spacing=0;verticalAlign=top;spacingLeft="+.6*h.SeparatorInset+";";v.value=g(h.subtext);v.style+=x?"":a(h.subtext)+d(h.subtext)+k(h.subtext);v.style+=c(v.style,h,e,v,x);var ra=new mxCell("",new mxGeometry(0,.4*r,t,.6*r),"fillColor=none;strokeColor=none;spacing=0;align=left;verticalAlign=bottom;spacingLeft="+
+.6*h.SeparatorInset+";");ra.vertex=!0;v.insert(ra);ra.value=g(h.text);ra.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);switch(h.AccessoryIndicatorType){case "Disclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);pa=new mxCell("",new mxGeometry(.79*
+t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "DetailIndicator":pa=new mxCell("",new mxGeometry(.87*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;"),Y.vertex=!0,v.insert(Y)}break;case "iOSRightDetailCell":v.style+=
+"shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;align=left;spacing=0;verticalAlign=middle;spacingLeft="+.6*h.SeparatorInset+";";v.value=g(h.subtext);v.style+=x?"":a(h.subtext)+d(h.subtext)+k(h.subtext);v.style+=c(v.style,h,e,v,x);ra=null;switch(h.AccessoryIndicatorType){case "Disclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);ra=new mxCell("",new mxGeometry(.55*t,0,.3*t,
+r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);pa=new mxCell("",new mxGeometry(.79*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);ra=new mxCell("",new mxGeometry(.45*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;case "DetailIndicator":pa=
+new mxCell("",new mxGeometry(.87*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);ra=new mxCell("",new mxGeometry(.52*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;");Y.vertex=!0;v.insert(Y);ra=new mxCell("",new mxGeometry(.55*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");
+break;default:ra=new mxCell("",new mxGeometry(.65*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;")}ra.vertex=!0;v.insert(ra);ra.value=g(h.text);ra.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);break;case "iOSLeftDetailCell":v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;";v.style+=c(v.style,h,e,v);var Sa=new mxCell("",new mxGeometry(0,0,.25*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;verticalAlign=middle;spacingRight=3;");
+Sa.vertex=!0;v.insert(Sa);Sa.value=g(h.subtext);Sa.style+=x?"html=1;":a(h.subtext)+d(h.subtext)+k(h.subtext);ra=new mxCell("",new mxGeometry(.25*t,0,.5*t,r),"fillColor=none;strokeColor=none;spacing=0;align=left;verticalAlign=middle;spacingLeft=3;");ra.vertex=!0;v.insert(ra);ra.value=g(h.text);ra.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);switch(h.AccessoryIndicatorType){case "Disclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");
Y.vertex=!0;v.insert(Y);break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);pa=new mxCell("",new mxGeometry(.79*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "DetailIndicator":pa=new mxCell("",new mxGeometry(.87*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=
-!0;v.insert(pa);break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;"),Y.vertex=!0,v.insert(Y)}break;case "iOSRightDetailCell":v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;align=left;spacing=0;verticalAlign=middle;spacingLeft="+.6*h.SeparatorInset+";";v.value=g(h.subtext);v.style+=x?"":a(h.subtext)+d(h.subtext)+k(h.subtext);v.style+=c(v.style,h,e,v,x);ra=null;switch(h.AccessoryIndicatorType){case "Disclosure":Y=
-new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);ra=new mxCell("",new mxGeometry(.55*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);pa=new mxCell("",new mxGeometry(.79*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");
-pa.vertex=!0;v.insert(pa);ra=new mxCell("",new mxGeometry(.45*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;case "DetailIndicator":pa=new mxCell("",new mxGeometry(.87*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);ra=new mxCell("",new mxGeometry(.52*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;");
-Y.vertex=!0;v.insert(Y);ra=new mxCell("",new mxGeometry(.55*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;");break;default:ra=new mxCell("",new mxGeometry(.65*t,0,.3*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;")}ra.vertex=!0;v.insert(ra);ra.value=g(h.text);ra.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);break;case "iOSLeftDetailCell":v.style+="shape=partialRectangle;left=0;top=0;right=0;fillColor=#ffffff;strokeColor=#C8C7CC;";v.style+=c(v.style,h,e,v);var Sa=
-new mxCell("",new mxGeometry(0,0,.25*t,r),"fillColor=none;strokeColor=none;spacing=0;align=right;verticalAlign=middle;spacingRight=3;");Sa.vertex=!0;v.insert(Sa);Sa.value=g(h.subtext);Sa.style+=x?"html=1;":a(h.subtext)+d(h.subtext)+k(h.subtext);ra=new mxCell("",new mxGeometry(.25*t,0,.5*t,r),"fillColor=none;strokeColor=none;spacing=0;align=left;verticalAlign=middle;spacingLeft=3;");ra.vertex=!0;v.insert(ra);ra.value=g(h.text);ra.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);switch(h.AccessoryIndicatorType){case "Disclosure":Y=
-new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);break;case "DetailDisclosure":Y=new mxCell("",new mxGeometry(.91*t,.35*r,.15*r,.3*r),"shape=mxgraph.ios7.misc.right;strokeColor=#D2D2D6;");Y.vertex=!0;v.insert(Y);pa=new mxCell("",new mxGeometry(.79*t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "DetailIndicator":pa=new mxCell("",new mxGeometry(.87*
-t,.25*r,.5*r,.5*r),"shape=mxgraph.ios7.icons.info;strokeColor=#007AFF;fillColor=#ffffff;");pa.vertex=!0;v.insert(pa);break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;"),Y.vertex=!0,v.insert(Y)}break;case "iOSTableGroupedSectionBreak":v.style+="shape=partialRectangle;left=0;right=0;fillColor=#EFEFF4;strokeColor=#C8C7CC;";U=new mxCell("",new mxGeometry(0,0,t,.4*r),"fillColor=none;strokeColor=none;spacing=10;align=left;");
-U.vertex=!0;v.insert(U);U.value=g(h.text);U.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);Fa=new mxCell("",new mxGeometry(0,.6*r,t,.4*r),"fillColor=none;strokeColor=none;spacing=10;align=left;");Fa.vertex=!0;v.insert(Fa);Fa.value=g(h["bottom-text"]);Fa.style+=x?"html=1;":a(h["bottom-text"])+d(h["bottom-text"])+k(h["bottom-text"]);break;case "iOSTablePlainHeaderFooter":v.style+="fillColor=#F7F7F7;strokeColor=none;align=left;spacingLeft=5;spacing=0;";v.value=g(h.text);v.style+=x?"":a(h.text)+d(h.text)+
-k(h.text);v.style+=c(v.style,h,e,v,x);break;case "SMPage":if(h.Group){v.style+="strokeColor=none;fillColor=none;";var q=new mxCell("",new mxGeometry(0,0,.9*t,.9*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=D(h,e)+O(h,e)+M(h,e,q)+X(h)+ja(h);var u=new mxCell("",new mxGeometry(.1*t,.1*r,.9*t,.9*r),"part=1;");u.vertex=!0;v.insert(u);u.value=g(h.Text);u.style+=D(h,e)+O(h,e)+M(h,e,u)+X(h)+ja(h)+l(h,x);h.Future&&(q.style+="dashed=1;",u.style+="dashed=1;")}else h.Future&&(v.style+="dashed=1;"),v.value=
-g(h.Text),v.style+=D(h,e)+O(h,e)+M(h,e,v)+X(h)+ja(h)+l(h,x);v.style+=c(v.style,h,e,v,x);break;case "SMHome":case "SMPrint":case "SMSearch":case "SMSettings":case "SMSitemap":case "SMSuccess":case "SMVideo":case "SMAudio":case "SMCalendar":case "SMChart":case "SMCloud":case "SMDocument":case "SMForm":case "SMGame":case "SMUpload":q=null;switch(b.Class){case "SMHome":q=new mxCell("",new mxGeometry(.5*t-.4*r,.1*r,.8*r,.8*r),"part=1;shape=mxgraph.office.concepts.home;flipH=1;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
-break;case "SMPrint":q=new mxCell("",new mxGeometry(.5*t-.4*r,.19*r,.8*r,.62*r),"part=1;shape=mxgraph.office.devices.printer;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMSearch":q=new mxCell("",new mxGeometry(.5*t-.4*r,.1*r,.8*r,.8*r),"part=1;shape=mxgraph.office.concepts.search;flipH=1;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMSettings":q=new mxCell("",new mxGeometry(.5*t-.35*r,.15*r,.7*r,.7*r),"part=1;shape=mxgraph.mscae.enterprise.settings;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
-break;case "SMSitemap":q=new mxCell("",new mxGeometry(.5*t-.35*r,.2*r,.7*r,.6*r),"part=1;shape=mxgraph.office.sites.site_collection;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMSuccess":q=new mxCell("",new mxGeometry(.5*t-.3*r,.25*r,.6*r,.5*r),"part=1;shape=mxgraph.mscae.general.checkmark;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMVideo":q=new mxCell("",new mxGeometry(.5*t-.4*r,.2*r,.8*r,.6*r),"part=1;shape=mxgraph.office.concepts.video_play;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
-break;case "SMAudio":q=new mxCell("",new mxGeometry(.5*t-.3*r,.2*r,.6*r,.6*r),"part=1;shape=mxgraph.mscae.general.audio;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMCalendar":q=new mxCell("",new mxGeometry(.5*t-.4*r,.15*r,.8*r,.7*r),"part=1;shape=mxgraph.office.concepts.form;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMChart":var I=O(h,e),I=""==I?"#ffffff;":I.replace("fillColor=",""),q=new mxCell("",new mxGeometry(.5*t-.35*r,.15*r,.7*r,.7*r),"part=1;shape=mxgraph.ios7.icons.pie_chart;fillColor=#e6e6e6;fillOpacity=50;strokeWidth=4;strokeColor="+
-I);break;case "SMCloud":q=new mxCell("",new mxGeometry(.5*t-.4*r,.27*r,.8*r,.46*r),"part=1;shape=mxgraph.networks.cloud;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMDocument":q=new mxCell("",new mxGeometry(.5*t-.25*r,.15*r,.5*r,.7*r),"part=1;shape=mxgraph.mscae.enterprise.document;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMForm":q=new mxCell("",new mxGeometry(.5*t-.4*r,.15*r,.8*r,.7*r),"part=1;shape=mxgraph.office.concepts.form;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
-break;case "SMGame":q=new mxCell("",new mxGeometry(.5*t-.4*r,.2*r,.8*r,.6*r),"part=1;shape=mxgraph.mscae.general.game_controller;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMUpload":q=new mxCell("",new mxGeometry(.5*t-.4*r,.2*r,.8*r,.6*r),"part=1;shape=mxgraph.mscae.enterprise.backup_online;fillColor=#e6e6e6;opacity=50;strokeColor=none;")}q.vertex=!0;v.insert(q);q.value=g(h.Text);q.style+=l(h,x);v.style+=c(v.style,h,e,v);break;case "UMLMultiplicityBlock":v.style+="strokeColor=none;fillColor=none;";
-q=new mxCell("",new mxGeometry(.1*t,0,.9*t,.9*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(0,.1*r,.9*t,.9*r),"part=1;");u.vertex=!0;v.insert(u);u.value=g(h.Text);u.style+=l(h.Text,x);u.style+=c(u.style,h,e,u,x);break;case "UMLConstraintBlock":var ub=new mxCell("",new mxGeometry(0,0,.25*r,r),"shape=curlyBracket;rounded=1;");ub.vertex=!0;v.insert(ub);var vb=new mxCell("",new mxGeometry(t-.25*r,0,.25*r,r),"shape=curlyBracket;rounded=1;flipH=1;");vb.vertex=
-!0;v.insert(vb);fa=new mxCell("",new mxGeometry(.25*r,0,t-.5*r,r),"strokeColor=none;fillColor=none;");fa.vertex=!0;fa.value=g(h);v.insert(fa);v.style="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);ub.style+=M(h,e,ub);vb.style+=M(h,e,vb);fa.style+=d(h,fa);ub.style+=c(ub.style,h,e,ub);vb.style+=c(vb.style,h,e,vb);fa.style+=c(fa.style,h,e,fa,x);break;case "UMLTextBlock":v.value=g(h.Text);v.style+="strokeColor=none;"+l(h.Text,x);v.style+=c(v.style,h,e,v,x);break;case "BPMNActivity":v.value=
-g(h.Text);switch(h.bpmnActivityType){case 1:v.style+=l(h.Text,x);break;case 2:v.style+="shape=ext;double=1;"+l(h.Text,x);break;case 3:v.style+="shape=ext;dashed=1;dashPattern=2 1;"+l(h.Text,x);break;case 4:v.style+="shape=ext;strokeWidth=2;"+l(h.Text,x)}if(0!=h.bpmnTaskType){switch(h.bpmnTaskType){case 1:q=new mxCell("",new mxGeometry(0,0,19,12),"shape=message;");q.geometry.offset=new mxPoint(4,7);break;case 2:q=new mxCell("",new mxGeometry(0,0,19,12),"shape=message;");q.geometry.offset=new mxPoint(4,
-7);break;case 3:q=new mxCell("",new mxGeometry(0,0,15,15),"shape=mxgraph.bpmn.user_task;");q.geometry.offset=new mxPoint(4,5);break;case 4:q=new mxCell("",new mxGeometry(0,0,15,10),"shape=mxgraph.bpmn.manual_task;");q.geometry.offset=new mxPoint(4,7);break;case 5:q=new mxCell("",new mxGeometry(0,0,18,13),"shape=mxgraph.bpmn.business_rule_task;");q.geometry.offset=new mxPoint(4,7);break;case 6:q=new mxCell("",new mxGeometry(0,0,15,15),"shape=mxgraph.bpmn.service_task;");q.geometry.offset=new mxPoint(4,
-5);break;case 7:q=new mxCell("",new mxGeometry(0,0,15,15),"shape=mxgraph.bpmn.script_task;"),q.geometry.offset=new mxPoint(4,5)}if(1==h.bpmnTaskType){var Kb=O(h,e),I=D(h,e),I=I.replace("strokeColor","fillColor"),Kb=Kb.replace("fillColor","strokeColor");""==I&&(I="fillColor=#000000;");""==Kb&&(Kb="strokeColor=#ffffff;");q.style+=Kb+I+"part=1;"}else q.style+=O(h,e)+D(h,e)+"part=1;";q.geometry.relative=!0;q.vertex=!0;v.insert(q)}var uc=0;0!=h.bpmnActivityMarker1&&uc++;0!=h.bpmnActivityMarker2&&uc++;
-var Ga=0;1==uc?Ga=-7.5:2==uc&&(Ga=-19);if(0!=h.bpmnActivityMarker1){switch(h.bpmnActivityMarker1){case 1:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=plus;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 2:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=mxgraph.bpmn.loop;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 3:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=parallelMarker;part=1;");q.geometry.offset=new mxPoint(Ga,
--20);q.style+=O(h,e)+D(h,e);break;case 4:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=parallelMarker;direction=south;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 5:q=new mxCell("",new mxGeometry(.5,1,15,10),"shape=mxgraph.bpmn.ad_hoc;strokeColor=none;flipH=1;part=1;");q.geometry.offset=new mxPoint(Ga,-17);I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");q.style+=I;break;case 6:q=new mxCell("",new mxGeometry(.5,1,15,11),"shape=mxgraph.bpmn.compensation;part=1;"),
-q.geometry.offset=new mxPoint(Ga,-18),q.style+=O(h,e)+D(h,e)}q.geometry.relative=!0;q.vertex=!0;v.insert(q)}2==uc&&(Ga=5);if(0!=h.bpmnActivityMarker2){switch(h.bpmnActivityMarker2){case 1:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=plus;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 2:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=mxgraph.bpmn.loop;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 3:q=new mxCell("",new mxGeometry(.5,
-1,15,15),"shape=parallelMarker;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 4:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=parallelMarker;direction=south;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 5:q=new mxCell("",new mxGeometry(.5,1,15,10),"shape=mxgraph.bpmn.ad_hoc;strokeColor=none;flipH=1;part=1;");q.geometry.offset=new mxPoint(Ga,-17);I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");
-q.style+=I;break;case 6:q=new mxCell("",new mxGeometry(.5,1,15,11),"shape=mxgraph.bpmn.compensation;part=1;"),q.geometry.offset=new mxPoint(Ga,-18),q.style+=O(h,e)+D(h,e)}q.geometry.relative=!0;q.vertex=!0;v.insert(q)}v.style+=c(v.style,h,e,v);break;case "BPMNEvent":v.style+="shape=mxgraph.bpmn.shape;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);if(1==h.bpmnDashed)switch(h.bpmnEventGroup){case 0:v.style+="outline=eventNonint;";break;case 1:v.style+="outline=boundNonint;";break;
-case 2:v.style+="outline=end;"}else switch(h.bpmnEventGroup){case 0:v.style+="outline=standard;";break;case 1:v.style+="outline=throwing;";break;case 2:v.style+="outline=end;"}switch(h.bpmnEventType){case 1:v.style+="symbol=message;";break;case 2:v.style+="symbol=timer;";break;case 3:v.style+="symbol=escalation;";break;case 4:v.style+="symbol=conditional;";break;case 5:v.style+="symbol=link;";break;case 6:v.style+="symbol=error;";break;case 7:v.style+="symbol=cancel;";break;case 8:v.style+="symbol=compensation;";
-break;case 9:v.style+="symbol=signal;";break;case 10:v.style+="symbol=multiple;";break;case 11:v.style+="symbol=parallelMultiple;";break;case 12:v.style+="symbol=terminate;"}v.style+=c(v.style,h,e,v,x);break;case "BPMNConversation":v.style+="shape=hexagon;perimeter=hexagonPerimeter2;";v.value=g(h.Text);v.style=0==h.bpmnConversationType?v.style+ja(h):v.style+"strokeWidth=2;";h.bpmnIsSubConversation&&(q=new mxCell("",new mxGeometry(.5,1,12,12),"shape=plus;part=1;"),q.geometry.offset=new mxPoint(-6,
--17),q.style+=O(h,e)+D(h,e),q.geometry.relative=!0,q.vertex=!0,v.insert(q));v.style+=c(v.style,h,e,v,x);break;case "BPMNGateway":v.style+="shape=mxgraph.bpmn.shape;perimeter=rhombusPerimeter;background=gateway;";switch(h.bpmnGatewayType){case 0:v.style+="outline=none;symbol=general;";break;case 1:v.style+="outline=none;symbol=exclusiveGw;";break;case 2:v.style+="outline=catching;symbol=multiple;";break;case 3:v.style+="outline=none;symbol=parallelGw;";break;case 4:v.style+="outline=end;symbol=general;";
-break;case 5:v.style+="outline=standard;symbol=multiple;";break;case 6:v.style+="outline=none;symbol=complexGw;";break;case 7:v.style+="outline=standard;symbol=parallelMultiple;"}v.style+=c(v.style,h,e,v);break;case "BPMNData":v.style+="shape=note;size=14;";switch(h.bpmnDataType){case 1:q=new mxCell("",new mxGeometry(.5,1,12,10),"shape=parallelMarker;part=1;");q.geometry.offset=new mxPoint(-6,-15);q.style+=O(h,e)+D(h,e);q.geometry.relative=!0;q.vertex=!0;v.insert(q);break;case 2:q=new mxCell("",new mxGeometry(0,
-0,12,10),"shape=singleArrow;part=1;arrowWidth=0.4;arrowSize=0.4;");q.geometry.offset=new mxPoint(3,3);q.style+=O(h,e)+D(h,e);q.geometry.relative=!0;q.vertex=!0;v.insert(q);v.style+="verticalLabelPosition=bottom;verticalAlign=top;";U=new mxCell("",new mxGeometry(0,0,t,20),"strokeColor=none;fillColor=none;");U.geometry.offset=new mxPoint(0,14);U.geometry.relative=!0;U.vertex=!0;v.insert(U);U.value=g(h.Text);U.style+=l(h,x);break;case 3:q=new mxCell("",new mxGeometry(0,0,12,10),"shape=singleArrow;part=1;arrowWidth=0.4;arrowSize=0.4;"),
-q.geometry.offset=new mxPoint(3,3),q.style+=D(h,e),q.geometry.relative=!0,q.vertex=!0,v.insert(q),I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),q.style+=I,U=new mxCell("",new mxGeometry(0,0,t,20),"strokeColor=none;fillColor=none;"),U.geometry.offset=new mxPoint(0,14),U.geometry.relative=!0,U.vertex=!0,v.insert(U),U.value=g(h.Text),U.style+=l(h,x)}v.style+=c(v.style,h,e,v);break;case "BPMNBlackPool":v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,
-0,t,r),"fillColor=#000000;strokeColor=none;opacity=30;");q.vertex=!0;v.insert(q);break;case "DFDExternalEntityBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);q=new mxCell("",new mxGeometry(0,0,.95*t,.95*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.05*t,.05*r,.95*t,.95*r),"part=1;");u.vertex=!0;v.insert(u);u.value=g(h.Text);u.style+=l(h.Text,x);u.style+=c(u.style,h,e,u,x);break;case "GSDFDDataStoreBlock":v.value=g(h.Text);
-v.style+="shape=partialRectangle;right=0;"+l(h.Text,x);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,.2*t,r),"part=1;");q.vertex=!0;v.insert(q);q.value=g(h.Number);q.style+=l(h.Number,x);q.style+=c(q.style,h,e,q,x);break;case "DefaultTableBlock":try{for(var Hb=h.RowHeights.length,Ib=h.ColWidths.length,Hc=[],vc=[],m=0;m<Hb;m++)Hc[m]=.6*h.RowHeights[m];for(Q=0;Q<Ib;Q++)vc[Q]=.6*h.ColWidths[Q];v.style="group;dropTarget=0;";var $c=h.BandedColor1,ad=h.BandedColor2,Pd=h.BandedRows,td=h.BandedCols,
-Ic=h.HideH,Qd=h.HideV,ud=h.TextVAlign,vd=h.FillColor,wd=h.StrokeStyle;delete h.StrokeStyle;for(var Rd=ga(vd,"fillOpacity"),xd=h.LineColor,Sd=ga(xd,"strokeOpacity"),oa=0,wc={},m=0;m<Hb;m++){ea=0;r=Hc[m];for(Q=0;Q<Ib;Q++){var Na=m+","+Q;if(wc[Na])ea+=vc[Q];else{for(var Jc=h["CellFill_"+Na],bd=h["NoBand_"+Na],Kc=h["CellSize_"+Na],mb=h["Cell_"+Na],yd=h["Cell_"+Na+"_VAlign"],Td=h["Cell_"+Na+"_TRotation"],Ud=h["CellBorderWidthH_"+Na],Vd=h["CellBorderColorH_"+Na],Wd=h["CellBorderStrokeStyleH_"+Na],Xd=h["CellBorderWidthV_"+
-Na],Yd=h["CellBorderColorV_"+Na],Zd=h["CellBorderStrokeStyleV_"+Na],zd=Ic?Yd:Vd,Ad=ga(zd,"strokeOpacity"),Bd=Ic?Xd:Ud,Cd=Ic?Zd:Wd,Jc=Pd&&!bd?0==m%2?$c:td&&!bd?0==Q%2?$c:ad:ad:td&&!bd?0==Q%2?$c:ad:Jc,$d=ga(Jc,"fillOpacity")||Rd,t=vc[Q],Dd=r,Rb=t,Ta=m+1;Ta<m+Kc.h;Ta++)if(null!=Hc[Ta]){Dd+=Hc[Ta];wc[Ta+","+Q]=!0;for(var Lb=Q+1;Lb<Q+Kc.w;Lb++)wc[Lb+","+Q]=!0}for(Ta=Q+1;Ta<Q+Kc.w;Ta++)if(null!=vc[Ta])for(Rb+=vc[Ta],wc[m+","+Ta]=!0,Lb=m+1;Lb<m+Kc.h;Lb++)wc[Lb+","+Ta]=!0;var R=new mxCell("",new mxGeometry(ea,
-oa,Rb,Dd),"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;"+(Qd?"left=0;right=0;":"")+(Ic?"top=0;bottom=0;":"")+Va(mxConstants.STYLE_FILLCOLOR,ba(Jc),ba(vd))+Va(mxConstants.STYLE_STROKECOLOR,ba(zd),ba(xd))+(null!=Bd?Va(mxConstants.STYLE_STROKEWIDTH,Math.round(.6*parseFloat(Bd)),"1"):"")+(Ad?Ad:Sd)+$d+"verticalAlign="+(yd?yd:ud?ud:"middle")+";"+na({StrokeStyle:Cd?Cd:wd?wd:"solid"})+(Td?"horizontal=0;":""));R.vertex=!0;R.value=g(mb);R.style+=c(R.style,h,e,R,x)+(x?"":a(mb)+d(mb)+k(mb)+w(mb,
-R)+y(mb)+z(mb)+A(mb)+B(mb))+C(mb)+E(mb);v.insert(R);ea+=t}}oa+=r}}catch(Ld){}break;case "VSMDedicatedProcessBlock":case "VSMProductionControlBlock":v.style+="shape=mxgraph.lean_mapping.manufacturing_process;spacingTop=15;";"VSMDedicatedProcessBlock"==b.Class?v.value=g(h.Text):"VSMProductionControlBlock"==b.Class&&(v.value=g(h.Resources));v.style+=c(v.style,h,e,v,x);"VSMDedicatedProcessBlock"==b.Class&&(q=new mxCell("",new mxGeometry(0,1,11,9),"part=1;shape=mxgraph.lean_mapping.operator;"),q.geometry.relative=
-!0,q.geometry.offset=new mxPoint(4,-13),q.vertex=!0,v.insert(q),q.style+=c(q.style,h,e,q));U=new mxCell("",new mxGeometry(0,0,t,15),"strokeColor=none;fillColor=none;part=1;");U.vertex=!0;v.insert(U);U.value=g(h.Title);U.style+=l(h.Title,x);break;case "VSMSharedProcessBlock":v.style+="shape=mxgraph.lean_mapping.manufacturing_process_shared;spacingTop=-5;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);U=new mxCell("",new mxGeometry(.1*t,.3*r,.8*t,.6*r),"part=1;");U.vertex=!0;v.insert(U);
-U.value=g(h.Resource);U.style+=l(h.Resource,x);U.style+=c(U.style,h,e,U,x);break;case "VSMWorkcellBlock":v.style+="shape=mxgraph.lean_mapping.work_cell;verticalAlign=top;spacingTop=-2;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);break;case "VSMSafetyBufferStockBlock":case "VSMDatacellBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);var Ca=r,Za=parseInt(h.Cells),N=c("part=1;",h,e,v);0<Za&&(Ca/=Za);H=[];qa=[];for(m=1;m<=Za;m++)H[m]=new mxCell("",new mxGeometry(0,(m-1)*
-Ca,t,Ca),N),H[m].vertex=!0,v.insert(H[m]),H[m].value=g(h["cell_"+m]),H[m].style+=l(h["cell_"+m],x);break;case "VSMInventoryBlock":v.style+="shape=mxgraph.lean_mapping.inventory_box;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);break;case "VSMSupermarketBlock":v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);Ca=r;Za=parseInt(h.Cells);N=c("part=1;fillColor=none;",h,e,v);0<Za&&(Ca/=Za);H=[];Sa=[];for(m=1;m<=Za;m++)H[m]=new mxCell("",new mxGeometry(.5*
-t,(m-1)*Ca,.5*t,Ca),"shape=partialRectangle;left=0;"+N),H[m].vertex=!0,v.insert(H[m]),Sa[m]=new mxCell("",new mxGeometry(0,(m-1)*Ca,t,Ca),"strokeColor=none;fillColor=none;part=1;"),Sa[m].vertex=!0,v.insert(Sa[m]),Sa[m].value=g(h["cell_"+m]),Sa[m].style+=l(h["cell_"+m],x);break;case "VSMFIFOLaneBlock":v.style+="shape=mxgraph.lean_mapping.fifo_sequence_flow;fontStyle=0;fontSize=18";v.style+=c(v.style,h,e,v);v.value="FIFO";break;case "VSMGoSeeProductionBlock":v.style+="shape=ellipse;";v.value=g(h.Text);
-v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.17*t,.2*r,13,6),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;whiteSpace=wrap;html=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "VSMProductionKanbanBatchBlock":v.style+="strokeColor=none;fillColor=none;";N="shape=card;size=18;flipH=1;part=1;";q=new mxCell("",new mxGeometry(.1*t,0,.9*t,.8*r),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;"+N);q.vertex=!0;v.insert(q);q.style+=
-c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.05*t,.1*r,.9*t,.8*r),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;"+N);u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);var F=new mxCell("",new mxGeometry(0,.2*r,.9*t,.8*r),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;whiteSpace=wrap;html=1;spacing=2;"+N);F.vertex=!0;v.insert(F);F.value=g(h.Text);F.style+=c(F.style,h,e,F,x);break;case "AWSRoundedRectangleContainerBlock2":v.style+="strokeColor=none;fillColor=none;";
-h.Spotfleet?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,35,40),"strokeColor=none;shape=mxgraph.aws3.spot_instance;fillColor=#f58536;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.Beanstalk?
-(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,30,40),"strokeColor=none;shape=mxgraph.aws3.elastic_beanstalk;fillColor=#759C3E;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.EC2?(q=new mxCell("",
-new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,32,40),"strokeColor=none;shape=mxgraph.aws3.ec2;fillColor=#F58534;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.Subnet?(q=new mxCell("",new mxGeometry(0,
-0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,32,40),"strokeColor=none;shape=mxgraph.aws3.permissions;fillColor=#146EB4;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.VPC?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),
-q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,60,40),"strokeColor=none;shape=mxgraph.aws3.virtual_private_cloud;fillColor=#146EB4;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.AWS?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=
-new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,60,40),"strokeColor=none;shape=mxgraph.aws3.cloud;fillColor=#F58534;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.Corporate?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,
-20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,25,40),"strokeColor=none;shape=mxgraph.aws3.corporate_data_center;fillColor=#7D7C7C;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):(v.style="resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;",v.value=g(h.Title),v.style+=c(v.style,h,e,v,x));break;case "AWSElasticComputeCloudBlock2":v.style+=
-"strokeColor=none;shape=mxgraph.aws3.ec2;verticalLabelPosition=bottom;align=center;verticalAlign=top;";v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);break;case "AWSRoute53Block2":v.style+="strokeColor=none;shape=mxgraph.aws3.route_53;verticalLabelPosition=bottom;align=center;verticalAlign=top;";v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);break;case "AWSRDBSBlock2":v.style+="strokeColor=none;shape=mxgraph.aws3.rds;verticalLabelPosition=bottom;align=center;verticalAlign=top;";v.value=g(h.Title);
-v.style+=c(v.style,h,e,v,x);break;case "NET_RingNetwork":v.style+="strokeColor=none;fillColor=none;";R=new mxCell("",new mxGeometry(.25*t,.25*r,.5*t,.5*r),"html=1;shape=ellipse;perimeter=ellipsePerimeter;strokeColor=#29AAE1;strokeWidth=2;");R.vertex=!0;v.insert(R);var ca=[R];R.style+=O(h,e);var V=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=none;dashed=0;html=1;strokeColor=#29AAE1;strokeWidth=2;");V.geometry.relative=!0;V.edge=!0;ob(.5*t,0,V,n,f,ca,v,R);ob(.855*t,.145*
-r,V,n,f,ca,v,R);ob(t,.5*r,V,n,f,ca,v,R);ob(.855*t,.855*r,V,n,f,ca,v,R);ob(.5*t,r,V,n,f,ca,v,R);ob(.145*t,.855*r,V,n,f,ca,v,R);ob(0,.5*r,V,n,f,ca,v,R);ob(.145*t,.145*r,V,n,f,ca,v,R);break;case "NET_Ethernet":v.style+="strokeColor=none;fillColor=none;";R=new mxCell("",new mxGeometry(0,.5*r-10,t,20),"shape=mxgraph.networks.bus;gradientColor=none;gradientDirection=north;fontColor=#ffffff;perimeter=backbonePerimeter;backboneSize=20;fillColor=#29AAE1;strokeColor=#29AAE1;");R.vertex=!0;v.insert(R);ca=[R];
-V=new mxCell("",new mxGeometry(0,0,0,0),"strokeColor=#29AAE1;edgeStyle=none;rounded=0;endArrow=none;html=1;strokeWidth=2;");V.geometry.relative=!0;V.edge=!0;for(var ca=[R],xc=t/h.NumTopNodes,m=0;m<h.NumTopNodes;m++)ob(.5*xc+m*xc,0,V,n,f,ca,v,R);xc=t/h.NumBottomNodes;for(m=0;m<h.NumBottomNodes;m++)ob(.5*xc+m*xc,r,V,n,f,ca,v,R);break;case "EE_OpAmp":v.style+="shape=mxgraph.electrical.abstract.operational_amp_1;";v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);h.ToggleCharge&&(v.style+="flipV=1;");break;
-case "EIMessageChannelBlock":case "EIDatatypeChannelBlock":case "EIInvalidMessageChannelBlock":case "EIDeadLetterChannelBlock":case "EIGuaranteedDeliveryBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);"EIMessageChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.messageChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIDatatypeChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,
-.5,.9*t,20),"shape=mxgraph.eip.dataChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIInvalidMessageChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.invalidMessageChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIDeadLetterChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.deadLetterChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIGuaranteedDeliveryBlock"==
-b.Class&&(q=new mxCell("",new mxGeometry(.5,.5,20,27),"shape=cylinder;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(-10,-7));q.geometry.relative=!0;q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);V=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");V.geometry.relative=!0;V.edge=!0;sa(.15*t,.25*r,.85*t,.25*r,V,n,f,ca,v,R);break;case "EIChannelAdapterBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
-v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,.07*r,.21*t,.86*r),"fillColor=#FFFF33;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.26*t,.09*r,.2*t,.82*r),"shape=mxgraph.eip.channel_adapter;fillColor=#4CA3D9;part=1;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);F=new mxCell("",new mxGeometry(1,.5,.35*t,20),"shape=mxgraph.eip.messageChannel;fillColor=#818181;part=1;");F.geometry.relative=!0;F.geometry.offset=new mxPoint(.4*
--t,-10);F.vertex=!0;v.insert(F);F.style+=c(F.style,h,e,F);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=1;exitY=0.5;entryX=0;entryY=0.5;endArrow=none;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=2;");K.geometry.relative=!0;K.edge=!0;q.insertEdge(K,!0);u.insertEdge(K,!1);K.style+=D(h,e);n.push(f.addCell(K,null,null,null,null));J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=1;exitY=0.5;entryX=0;entryY=0.5;endArrow=block;startArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=2;startFill=1;startSize=2;");
-J.geometry.relative=!0;J.edge=!0;u.insertEdge(J,!0);F.insertEdge(J,!1);n.push(f.addCell(J,null,null,null,null));break;case "EIMessageBlock":case "EICommandMessageBlock":case "EIDocumentMessageBlock":case "EIEventMessageBlock":v.style+="strokeColor=none;fillColor=none;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,17,17),"shape=ellipse;fillColor=#808080;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);for(var yc=
-h.Messages,cd=(r-17)/yc,u=[],V=[],m=0;m<yc;m++){var zc=cd*(m+1)-3;u[m]=new mxCell("",new mxGeometry(t-20,zc,20,20),"part=1;");u[m].vertex=!0;v.insert(u[m]);switch(b.Class){case "EIMessageBlock":u[m].value=g(h["message_"+(m+1)]);u.style+=l(h["message_"+(m+1)],x);break;case "EICommandMessageBlock":u[m].value="C";u[m].style+="fontStyle=1;fontSize=11;";break;case "EIDocumentMessageBlock":u[m].value="D";u[m].style+="fontStyle=1;fontSize=11;";break;case "EIEventMessageBlock":u[m].value="E",u[m].style+=
-"fontStyle=1;fontSize=11;"}u[m].style+=c(u[m].style,h,e,u[m]);V[m]=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;");V[m].geometry.relative=!0;V[m].edge=!0;q.insertEdge(V[m],!1);u[m].insertEdge(V[m],!0);V[m].style+=c(V[m].style,h,e,V[m]);var Bb=[];Bb.push(new mxPoint(ea+8.5,oa+zc+10));V[m].geometry.points=Bb;n.push(f.addCell(V[m],null,null,null,null))}break;case "EIMessageEndpointBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
-v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.45*t,.25*r,.3*t,.5*r),"part=1;fillColor=#ffffff");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);V=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");V.geometry.relative=!0;V.edge=!0;sa(0,.5*r,.4*t,.5*r,V,n,f,ca,v,R);break;case "EIPublishSubscribeChannelBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
-v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);var K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");K.geometry.relative=!0;K.edge=!0;sa(.05*t,.5*r,.85*t,.5*r,K,n,f,ca,v,R);var J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");J.geometry.relative=!0;J.edge=!0;sa(.05*t,.5*r,.85*t,.15*
-r,J,n,f,ca,v,R);var S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");S.geometry.relative=!0;S.edge=!0;sa(.05*t,.5*r,.85*t,.85*r,S,n,f,ca,v,R);break;case "EIMessageBusBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");
-K.geometry.relative=!0;K.edge=!0;K.style+=D(h,e);sa(.05*t,.5*r,.95*t,.5*r,K,n,f,ca,v,R);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");J.geometry.relative=!0;J.edge=!0;J.style+=D(h,e);sa(.3*t,.1*r,.3*t,.5*r,J,n,f,ca,v,R);S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");
-S.geometry.relative=!0;S.edge=!0;S.style+=D(h,e);sa(.7*t,.1*r,.7*t,.5*r,S,n,f,ca,v,R);var ma=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");ma.geometry.relative=!0;ma.edge=!0;ma.style+=D(h,e);sa(.5*t,.5*r,.5*t,.9*r,ma,n,f,ca,v,R);break;case "EIRequestReplyBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,
-x);q=new mxCell("",new mxGeometry(.2*t,.21*r,.16*t,.24*r),"part=1;fillColor=#ffffff;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");K.geometry.relative=!0;K.edge=!0;sa(.45*t,.33*r,.8*t,.33*r,K,n,f,ca,v,R);u=new mxCell("",new mxGeometry(.64*t,.55*r,.16*t,.24*r),"part=1;fillColor=#ffffff;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);J=
-new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");J.geometry.relative=!0;J.edge=!0;sa(.55*t,.67*r,.2*t,.67*r,J,n,f,ca,v,R);break;case "EIReturnAddressBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.1*t,.15*r,.8*t,.7*r),"part=1;shape=mxgraph.eip.retAddr;fillColor=#FFE040;");q.vertex=!0;v.insert(q);q.style+=
-c(q.style,h,e,q);break;case "EICorrelationIDBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.04*t,.06*r,.18*t,.28*r),"shape=ellipse;fillColor=#808080;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.2*t,.56*r,.2*t,.32*r),"part=1;");u.vertex=!0;v.insert(u);u.value="A";u.style+="fontStyle=1;fontSize=11;";q.style+=c(q.style,h,e,q);K=new mxCell("",new mxGeometry(0,
-0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;part=1;");K.geometry.relative=!0;K.edge=!0;q.insertEdge(K,!1);u.insertEdge(K,!0);K.style+=c(K.style,h,e,K);Bb=[];Bb.push(new mxPoint(ea+.13*t,oa+.72*r));K.geometry.points=Bb;n.push(f.addCell(K,null,null,null,null));F=new mxCell("",new mxGeometry(.6*t,.06*r,.18*t,.28*r),"shape=ellipse;fillColor=#808080;part=1;");F.vertex=!0;v.insert(F);F.style+=D(h,e)+ja(h);F.style+=c(F.style,h,e,F);P=new mxCell("",new mxGeometry(.76*
-t,.56*r,.2*t,.32*r),"part=1;");P.vertex=!0;v.insert(P);P.style+=D(h,e)+M(h,e,P)+ja(h)+na(h);P.value="B";P.style+="fontStyle=1;fontSize=11;fillColor=#ffffff;";P.style+=c(P.style,h,e,P);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;part=1;");J.geometry.relative=!0;J.edge=!0;F.insertEdge(J,!1);P.insertEdge(J,!0);J.style+=c(J.style,h,e,J);var Ed=[];Ed.push(new mxPoint(ea+.69*t,oa+.72*r));J.geometry.points=Ed;n.push(f.addCell(J,
-null,null,null,null));S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;endSize=6;part=1;");S.geometry.relative=!0;S.edge=!0;q.insertEdge(S,!1);F.insertEdge(S,!0);S.style+=c(S.style,h,e,S);n.push(f.addCell(S,null,null,null,null));break;case "EIMessageSequenceBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("1",new mxGeometry(.2*t,.4*r,.1*t,.19*r),"fontStyle=1;fillColor=#ffffff;fontSize=11;part=1;");
-q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("2",new mxGeometry(.45*t,.4*r,.1*t,.19*r),"fontStyle=1;fillColor=#ffffff;fontSize=11;part=1;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);F=new mxCell("3",new mxGeometry(.7*t,.4*r,.1*t,.19*r),"fontStyle=1;fillColor=#ffffff;fontSize=11;part=1;");F.vertex=!0;v.insert(F);F.style+=c(F.style,h,e,F);K=new mxCell("",new mxGeometry(0,0,0,0),"curved=1;endArrow=block;html=1;endSize=3;part=1;");q.insertEdge(K,!1);u.insertEdge(K,!0);K.geometry.points=
-[new mxPoint(ea+.375*t,oa+.15*r)];K.geometry.relative=!0;K.edge=!0;K.style+=c(K.style,h,e,K);n.push(f.addCell(K,null,null,null,null));J=new mxCell("",new mxGeometry(0,0,0,0),"curved=1;endArrow=block;html=1;endSize=3;part=1;");u.insertEdge(J,!1);F.insertEdge(J,!0);J.geometry.points=[new mxPoint(ea+.675*t,oa+.15*r)];J.geometry.relative=!0;J.edge=!0;J.style+=c(J.style,h,e,J);n.push(f.addCell(J,null,null,null,null));break;case "EIMessageExpirationBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
-v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.3*t,.2*r,.4*t,.6*r),"shape=mxgraph.ios7.icons.clock;fillColor=#ffffff;flipH=1;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EIMessageBrokerBlock":v.style+="strokeColor=none;fillColor=none;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.38*t,.42*r,.24*t,.16*r),"part=1;fillColor=#aefe7d;");q.vertex=!0;v.insert(q);q.style+=
-c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.38*t,0,.24*t,.16*r),"part=1;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);F=new mxCell("",new mxGeometry(.76*t,.23*r,.24*t,.16*r),"");F.vertex=!0;v.insert(F);F.style=u.style;var P=new mxCell("",new mxGeometry(.76*t,.61*r,.24*t,.16*r),"");P.vertex=!0;v.insert(P);P.style=u.style;var Lc=new mxCell("",new mxGeometry(.38*t,.84*r,.24*t,.16*r),"");Lc.vertex=!0;v.insert(Lc);Lc.style=u.style;var Mc=new mxCell("",new mxGeometry(0,.61*r,.24*t,.16*r),"");
-Mc.vertex=!0;v.insert(Mc);Mc.style=u.style;var Nc=new mxCell("",new mxGeometry(0,.23*r,.24*t,.16*r),"");Nc.vertex=!0;v.insert(Nc);Nc.style=u.style;K=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(K,!1);u.insertEdge(K,!0);K.edge=!0;K.style+=c(K.style,h,e,K);n.push(f.addCell(K,null,null,null,null));J=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(J,!1);F.insertEdge(J,!0);J.edge=!0;J.style+=c(J.style,h,e,J);n.push(f.addCell(J,null,null,null,null));
-S=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(S,!1);P.insertEdge(S,!0);S.edge=!0;S.style+=c(S.style,h,e,S);n.push(f.addCell(S,null,null,null,null));ma=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(ma,!1);Lc.insertEdge(ma,!0);ma.edge=!0;ma.style+=c(ma.style,h,e,ma);n.push(f.addCell(ma,null,null,null,null));var Cb=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(Cb,!1);Mc.insertEdge(Cb,!0);Cb.edge=!0;Cb.style+=
-c(Cb.style,h,e,Cb);n.push(f.addCell(Cb,null,null,null,null));var Db=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(Db,!1);Nc.insertEdge(Db,!0);Db.edge=!0;Db.style+=c(Db.style,h,e,Db);n.push(f.addCell(Db,null,null,null,null));break;case "EIDurableSubscriberBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;endFill=1;endSize=6;");
-K.geometry.relative=!0;K.edge=!0;sa(.05*t,.5*r,.6*t,.25*r,K,n,f,ca,v,R);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;endFill=1;endSize=6;");J.geometry.relative=!0;J.edge=!0;sa(.05*t,.5*r,.6*t,.75*r,J,n,f,ca,v,R);q=new mxCell("",new mxGeometry(.7*t,.1*r,.15*t,.32*r),"shape=mxgraph.eip.durable_subscriber;part=1;fillColor=#818181;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EIControlBusBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
-v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.25*t,.25*r,.5*t,.5*r),"shape=mxgraph.eip.control_bus;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EIMessageHistoryBlock":v.style+="strokeColor=none;fillColor=none;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,17,17),"shape=ellipse;fillColor=#808080;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);F=new mxCell("",
-new mxGeometry(t-45,30,30,20),"shape=mxgraph.mockup.misc.mail2;fillColor=#FFE040;part=1;");F.vertex=!0;v.insert(F);F.style+=c(F.style,h,e,F);S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;");S.geometry.relative=!0;S.edge=!0;q.insertEdge(S,!1);F.insertEdge(S,!0);S.style+=c(S.style,h,e,S);S.geometry.points=[new mxPoint(ea+8.5,oa+40)];n.push(f.addCell(S,null,null,null,null));P=new mxCell("",new mxGeometry(t-45,r-20,20,
-20),"part=1;");P.vertex=!0;v.insert(P);P.value=g(h.message_0);P.style+=l(h.message_0,x);P.style+=c(P.style,h,e,P,x);ma=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;");ma.geometry.relative=!0;ma.edge=!0;q.insertEdge(ma,!1);P.insertEdge(ma,!0);ma.style+=c(ma.style,h,e,ma);ma.geometry.points=[new mxPoint(ea+8.5,oa+r-10)];n.push(f.addCell(ma,null,null,null,null));yc=h.HistoryMessages;cd=(r-75)/yc;u=[];V=[];for(m=0;m<yc;m++)zc=
-cd*(m+1)+30,u[m]=new mxCell("",new mxGeometry(t-20,zc,20,20),"part=1;"),u[m].vertex=!0,u[m].value=g(h["message_"+(m+1)]),u.style+=l(h["message_"+(m+1)],x),v.insert(u[m]),u[m].style+=c(u[m].style,h,e,u[m],x),V[m]=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;"),V[m].geometry.relative=!0,V[m].edge=!0,F.insertEdge(V[m],!1),u[m].insertEdge(V[m],!0),V[m].style+=c(V[m].style,h,e,V[m]),Bb=[],Bb.push(new mxPoint(ea+t-30,oa+zc+
-10)),V[m].geometry.points=Bb,n.push(f.addCell(V[m],null,null,null,null));break;case "fpDoor":v.style+="shape=mxgraph.floorplan.doorRight;";0>h.DoorAngle&&(v.style+="flipV=1;");v.style+=c(v.style,h,e,v);break;case "fpDoubleDoor":v.style+="shape=mxgraph.floorplan.doorDouble;";0<h.DoorAngle&&(v.style+="flipV=1;");v.style+=c(v.style,h,e,v);break;case "fpRestroomLights":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);q=new mxCell("",new mxGeometry(0,0,t,.25*r),"part=1;");q.vertex=
-!0;v.insert(q);q.style+=c(q.style,h,e,q);for(var u=[],Fd=.02*t,dd=(t-2*Fd)/h.LightCount,Gd=.8*dd,m=0;m<h.LightCount;m++)u[m]=new mxCell("",new mxGeometry(Fd+dd*m+(dd-Gd)/2,.25*r,Gd,.75*r),"part=1;shape=ellipse;"),u[m].vertex=!0,v.insert(u[m]),u[m].style+=c(u[m].style,h,e,u[m]);break;case "fpRestroomSinks":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);for(var q=[],Hd=t/h.SinkCount,m=0;m<h.SinkCount;m++)q[m]=new mxCell("",new mxGeometry(Hd*m,0,Hd,r),"part=1;shape=mxgraph.floorplan.sink_2;"),
-q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]);break;case "fpRestroomStalls":v.style+="strokeColor=none;fillColor=none;";var Ha=.1*t/h.StallCount,q=new mxCell("",new mxGeometry(0,0,Ha,r),"fillColor=#000000;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);for(var Oa=(t-Ha)/h.StallCount,ed=[],Ac=[],Bc=[],Cc=[],I=D(h,e),I=""==I?"#000000;":I.replace("stokreColor=",""),Oc="part=1;fillColor="+I,Oc=Oc+c(Oc,h,e,v),fd=c("",h,e,v),m=0;m<h.StallCount;m++)ed[m]=new mxCell("",new mxGeometry((m+
-1)*Oa,0,Ha,r),Oc),ed[m].vertex=!0,v.insert(ed[m]),Bc[m]=new mxCell("",new mxGeometry(Ha+m*Oa+.05*(Oa-Ha),r-.92*(Oa-Ha),.9*(Oa-Ha),.92*(Oa-Ha)),"shape=mxgraph.floorplan.doorRight;flipV=1;part=1;"),Bc[m].vertex=!0,v.insert(Bc[m]),Bc[m].style+=fd,Ac[m]=new mxCell("",new mxGeometry(Ha+m*Oa+.2*(Oa-Ha),0,.6*(Oa-Ha),.8*(Oa-Ha)),"shape=mxgraph.floorplan.toilet;part=1;"),Ac[m].vertex=!0,v.insert(Ac[m]),Ac[m].style+=fd,Cc[m]=new mxCell("",new mxGeometry(Ha+m*Oa,.42*r,.15*(Oa-Ha),.12*(Oa-Ha)),"part=1;"),Cc[m].vertex=
-!0,v.insert(Cc[m]),Cc[m].style+=fd;break;case "PEOneToMany":v.style+="strokeColor=none;fillColor=none;";var Ua="edgeStyle=none;endArrow=none;part=1;";Ua.style+=c(Ua.style,h,e,Ua);var I=D(h,e),I=""==I?"#000000;":I.replace("strokeColor=",""),Eb="shape=triangle;part=1;fillColor="+I,Eb=Eb+c(Eb,h,e,v),K=new mxCell("",new mxGeometry(0,0,0,0),Ua);K.geometry.relative=!0;K.edge=!0;sa(0,.5*r,.65*t,.5*r,K,n,f,ca,v,R);for(var L=r/h.numLines,J=[],Mb=[],m=0;m<h.numLines;m++)J[m]=new mxCell("",new mxGeometry(0,
-0,0,0),Ua),J[m].geometry.relative=!0,J[m].edge=!0,sa(.65*t,.5*r,.96*t,(m+.5)*L,J[m],n,f,ca,v,R),Mb[m]=new mxCell("",new mxGeometry(.95*t,(m+.2)*L,.05*t,.6*L),Eb),Mb[m].vertex=!0,v.insert(Mb[m]);break;case "PEMultilines":v.style+="strokeColor=none;fillColor=none;";Ua="edgeStyle=none;endArrow=none;part=1;";Ua.style+=c(Ua.style,h,e,Ua);I=D(h,e);I=""==I?"#000000;":I.replace("strokeColor=","");Eb="shape=triangle;part=1;fillColor="+I;Eb+=c(Eb,h,e,v);L=r/h.numLines;J=[];Mb=[];for(m=0;m<h.numLines;m++)J[m]=
-new mxCell("",new mxGeometry(0,0,0,0),Ua),J[m].geometry.relative=!0,J[m].edge=!0,sa(0,(m+.5)*L,.96*t,(m+.5)*L,J[m],n,f,ca,v,R),Mb[m]=new mxCell("",new mxGeometry(.95*t,(m+.2)*L,.05*t,.6*L),Eb),Mb[m].vertex=!0,v.insert(Mb[m]);break;case "PEVesselBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);switch(h.vesselType){case 1:v.style+="shape=mxgraph.pid.vessels.pressurized_vessel;";break;case 2:v.style+="shape=hexagon;perimeter=hexagonPerimeter2;size=0.10;direction=south;"}v.style+=
-c(v.style,h,e,v,x);break;case "PEClosedTankBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);1==h.peakedRoof&&0==h.stumpType?v.style+="shape=mxgraph.pid.vessels.tank_(conical_roof);":1==h.stumpType&&(v.style+="shape=mxgraph.pid.vessels.tank_(boot);");v.style+=c(v.style,h,e,v,x);break;case "PEColumnBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style=0==h.columnType?v.style+"shape=mxgraph.pid.vessels.pressurized_vessel;":v.style+
-"shape=mxgraph.pid.vessels.tank;";v.style+=c(v.style,h,e,v,x);break;case "PECompressorTurbineBlock":v.style+="strokeColor=none;fillColor=none;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,.2*r,t,.6*r),"part=1;shape=trapezoid;perimeter=trapezoidPerimeter;direction=south;");q.vertex=!0;v.insert(q);q.style+=N;q.style+=c(q.style,h,e,q);N="endSize=4;endArrow=block;endFill=1;";0==h.compressorType?(K=new mxCell("",new mxGeometry(0,0,0,0),""),K.geometry.relative=!0,K.edge=
-!0,K.style+=N,K.style+=c(K.style,h,e,K),sa(0,0,0,.2*r,K,n,f,ca,v,R),J=new mxCell("",new mxGeometry(0,0,0,0),""),J.geometry.relative=!0,J.edge=!0,J.style+=N,J.style+=c(J.style,h,e,J),sa(t,.67*r,t,r,J,n,f,ca,v,R)):(q.style+="flipH=1;",K=new mxCell("",new mxGeometry(0,0,0,0),""),K.geometry.relative=!0,K.edge=!0,K.style+=N,K.style+=c(K.style,h,e,K),sa(0,0,0,.33*r,K,n,f,ca,v,R),J=new mxCell("",new mxGeometry(0,0,0,0),""),J.geometry.relative=!0,J.edge=!0,J.style+=N,J.style+=c(J.style,h,e,J),sa(t,.8*r,t,
-r,J,n,f,ca,v,R));1==h.centerLineType&&(S=new mxCell("",new mxGeometry(0,0,0,0),""),S.geometry.relative=!0,S.edge=!0,S.style+=N,S.style+=c(S.style,h,e,S),sa(.2*t,.5*r,.8*t,.5*r,S,n,f,ca,v,R));break;case "PEMotorDrivenTurbineBlock":v.style+="shape=ellipse;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.2*t,.2*r,.6*t,.6*r),"part=1;shape=trapezoid;perimeter=trapezoidPerimeter;direction=south;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "PEIndicatorBlock":case "PEIndicator2Block":case "PESharedIndicatorBlock":case "PEComputerIndicatorBlock":case "PESharedIndicator2Block":case "PEProgrammableIndicatorBlock":switch(b.Class){case "PEIndicatorBlock":v.style+=
-"shape=mxgraph.pid2inst.discInst;";break;case "PEIndicator2Block":v.style+="shape=mxgraph.pid2inst.indicator;indType=inst;";break;case "PESharedIndicatorBlock":v.style+="shape=mxgraph.pid2inst.sharedCont;";break;case "PEComputerIndicatorBlock":v.style+="shape=mxgraph.pid2inst.compFunc;";break;case "PESharedIndicator2Block":v.style+="shape=mxgraph.pid2inst.indicator;indType=ctrl;";break;case "PEProgrammableIndicatorBlock":v.style+="shape=mxgraph.pid2inst.progLogCont;"}v.style+=c(v.style,h,e,v);"PEIndicator2Block"==
-b.Class||"PESharedIndicator2Block"==b.Class?(q=new mxCell("",new mxGeometry(0,0,t,.5*t),"part=1;strokeColor=none;fillColor=none;"),q.vertex=!0,v.insert(q),q.value=g(h.TopText),q.style+=l(h.TopText,x),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,.5*t,t,.5*t),"part=1;strokeColor=none;fillColor=none;")):(q=new mxCell("",new mxGeometry(0,0,t,.5*r),"part=1;strokeColor=none;fillColor=none;"),q.vertex=!0,v.insert(q),q.value=g(h.TopText),q.style+=l(h.TopText,x),q.style+=c(q.style,h,e,q,x),
-u=new mxCell("",new mxGeometry(0,.5*r,t,.5*r),"part=1;strokeColor=none;fillColor=none;"));u.vertex=!0;v.insert(u);u.value=g(h.BotText);u.style+=l(h.BotText,x);u.style+=c(u.style,h,e,u,x);switch(h.instrumentLocation){case 0:v.style+="mounting=field;";break;case 1:v.style+="mounting=inaccessible;";break;case 2:v.style+="mounting=room;";break;case 3:v.style+="mounting=local;"}break;case "PEGateValveBlock":case "PEGlobeValveBlock":case "PEAngleValveBlock":case "PEAngleGlobeValveBlock":case "PEPoweredValveBlock":var gd=
-!1;"PEPoweredValveBlock"==b.Class?1!=h.poweredHandOperated&&(gd=!0):1!=h.handOperated&&(gd=!0);if(gd){var h=p(b).Properties,Z=h.BoundingBox,ae=Z.h;Z.h="PEAngleValveBlock"==b.Class||"PEAngleGlobeValveBlock"==b.Class?.7*Z.h:.6*Z.h;v=new mxCell("",new mxGeometry(Math.round(.6*Z.x+wb),Math.round(.6*(Z.y+ae-Z.h)+xb),Math.round(.6*Z.w),Math.round(.6*Z.h)),"");v.vertex=!0;Fb(v,b,f)}if("PEPoweredValveBlock"==b.Class)v.style+="shape=mxgraph.pid2valves.valve;verticalLabelPosition=bottom;verticalAlign=top;",
-v.style+=c(v.style,h,e,v),1==h.poweredHandOperated?(v.style+="valveType=gate;actuator=powered;",q=new mxCell("",new mxGeometry(.325*t,0,.35*t,.35*r),"part=1;strokeColor=none;fillColor=none;spacingTop=2;"),q.vertex=!0,v.insert(q),q.value=g(h.PoweredText),q.style+=(x?"":"fontSize=6;"+d(h.PoweredText)+k(h.PoweredText)+w(h.PoweredText)+y(h.PoweredText)+z(h.PoweredText)+B(h.PoweredText)+C(h.PoweredText))+E(h.PoweredText),q.style+=c(q.style,h,e,q,x)):v.style+="valveType=gate;";else{v.style+="verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.pid2valves.valve;";
-v.value=g(h.Text);switch(b.Class){case "PEGateValveBlock":v.style+="valveType=gate;";break;case "PEGlobeValveBlock":v.style+="valveType=globe;";break;case "PEAngleValveBlock":v.style+="valveType=angle;";break;case "PEAngleGlobeValveBlock":v.style+="valveType=angleGlobe;flipH=1;"}1==h.handOperated&&(v.style+="actuator=man;")}v.style+=c(v.style,h,e,v,x);break;case "UI2BrowserBlock":v.style+="shape=mxgraph.mockup.containers.browserWindow;mainText=;";1==h.vScroll&&(F=1==h.hScroll?new mxCell("",new mxGeometry(1,
-0,20,r-130),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-110),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(-20,110),F.vertex=!0,v.insert(F),v.style+="spacingRight=20;");1==h.hScroll&&(P=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):
-new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),P.geometry.relative=!0,P.geometry.offset=new mxPoint(0,-20),P.vertex=!0,v.insert(P));v.style+=c(v.style,h,e,v);break;case "UI2WindowBlock":v.value=g(h.Title);v.style+="shape=mxgraph.mockup.containers.window;mainText=;align=center;verticalAlign=top;spacing=5;"+(x?"":a(h.Title)+d(h.Title)+k(h.Title));1==h.vScroll&&(F=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-50),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):
+!0;v.insert(pa);break;case "CheckMark":Y=new mxCell("",new mxGeometry(.89*t,.37*r,.4*r,.26*r),"shape=mxgraph.ios7.misc.check;strokeColor=#007AFF;strokeWidth=2;"),Y.vertex=!0,v.insert(Y)}break;case "iOSTableGroupedSectionBreak":v.style+="shape=partialRectangle;left=0;right=0;fillColor=#EFEFF4;strokeColor=#C8C7CC;";U=new mxCell("",new mxGeometry(0,0,t,.4*r),"fillColor=none;strokeColor=none;spacing=10;align=left;");U.vertex=!0;v.insert(U);U.value=g(h.text);U.style+=x?"html=1;":a(h.text)+d(h.text)+k(h.text);
+Fa=new mxCell("",new mxGeometry(0,.6*r,t,.4*r),"fillColor=none;strokeColor=none;spacing=10;align=left;");Fa.vertex=!0;v.insert(Fa);Fa.value=g(h["bottom-text"]);Fa.style+=x?"html=1;":a(h["bottom-text"])+d(h["bottom-text"])+k(h["bottom-text"]);break;case "iOSTablePlainHeaderFooter":v.style+="fillColor=#F7F7F7;strokeColor=none;align=left;spacingLeft=5;spacing=0;";v.value=g(h.text);v.style+=x?"":a(h.text)+d(h.text)+k(h.text);v.style+=c(v.style,h,e,v,x);break;case "SMPage":if(h.Group){v.style+="strokeColor=none;fillColor=none;";
+var q=new mxCell("",new mxGeometry(0,0,.9*t,.9*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=D(h,e)+O(h,e)+M(h,e,q)+X(h)+ja(h);var u=new mxCell("",new mxGeometry(.1*t,.1*r,.9*t,.9*r),"part=1;");u.vertex=!0;v.insert(u);u.value=g(h.Text);u.style+=D(h,e)+O(h,e)+M(h,e,u)+X(h)+ja(h)+l(h,x);h.Future&&(q.style+="dashed=1;",u.style+="dashed=1;")}else h.Future&&(v.style+="dashed=1;"),v.value=g(h.Text),v.style+=D(h,e)+O(h,e)+M(h,e,v)+X(h)+ja(h)+l(h,x);v.style+=c(v.style,h,e,v,x);break;case "SMHome":case "SMPrint":case "SMSearch":case "SMSettings":case "SMSitemap":case "SMSuccess":case "SMVideo":case "SMAudio":case "SMCalendar":case "SMChart":case "SMCloud":case "SMDocument":case "SMForm":case "SMGame":case "SMUpload":q=
+null;switch(b.Class){case "SMHome":q=new mxCell("",new mxGeometry(.5*t-.4*r,.1*r,.8*r,.8*r),"part=1;shape=mxgraph.office.concepts.home;flipH=1;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMPrint":q=new mxCell("",new mxGeometry(.5*t-.4*r,.19*r,.8*r,.62*r),"part=1;shape=mxgraph.office.devices.printer;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMSearch":q=new mxCell("",new mxGeometry(.5*t-.4*r,.1*r,.8*r,.8*r),"part=1;shape=mxgraph.office.concepts.search;flipH=1;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
+break;case "SMSettings":q=new mxCell("",new mxGeometry(.5*t-.35*r,.15*r,.7*r,.7*r),"part=1;shape=mxgraph.mscae.enterprise.settings;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMSitemap":q=new mxCell("",new mxGeometry(.5*t-.35*r,.2*r,.7*r,.6*r),"part=1;shape=mxgraph.office.sites.site_collection;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMSuccess":q=new mxCell("",new mxGeometry(.5*t-.3*r,.25*r,.6*r,.5*r),"part=1;shape=mxgraph.mscae.general.checkmark;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
+break;case "SMVideo":q=new mxCell("",new mxGeometry(.5*t-.4*r,.2*r,.8*r,.6*r),"part=1;shape=mxgraph.office.concepts.video_play;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMAudio":q=new mxCell("",new mxGeometry(.5*t-.3*r,.2*r,.6*r,.6*r),"part=1;shape=mxgraph.mscae.general.audio;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMCalendar":q=new mxCell("",new mxGeometry(.5*t-.4*r,.15*r,.8*r,.7*r),"part=1;shape=mxgraph.office.concepts.form;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
+break;case "SMChart":var I=O(h,e),I=""==I?"#ffffff;":I.replace("fillColor=",""),q=new mxCell("",new mxGeometry(.5*t-.35*r,.15*r,.7*r,.7*r),"part=1;shape=mxgraph.ios7.icons.pie_chart;fillColor=#e6e6e6;fillOpacity=50;strokeWidth=4;strokeColor="+I);break;case "SMCloud":q=new mxCell("",new mxGeometry(.5*t-.4*r,.27*r,.8*r,.46*r),"part=1;shape=mxgraph.networks.cloud;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMDocument":q=new mxCell("",new mxGeometry(.5*t-.25*r,.15*r,.5*r,.7*r),"part=1;shape=mxgraph.mscae.enterprise.document;fillColor=#e6e6e6;opacity=50;strokeColor=none;");
+break;case "SMForm":q=new mxCell("",new mxGeometry(.5*t-.4*r,.15*r,.8*r,.7*r),"part=1;shape=mxgraph.office.concepts.form;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMGame":q=new mxCell("",new mxGeometry(.5*t-.4*r,.2*r,.8*r,.6*r),"part=1;shape=mxgraph.mscae.general.game_controller;fillColor=#e6e6e6;opacity=50;strokeColor=none;");break;case "SMUpload":q=new mxCell("",new mxGeometry(.5*t-.4*r,.2*r,.8*r,.6*r),"part=1;shape=mxgraph.mscae.enterprise.backup_online;fillColor=#e6e6e6;opacity=50;strokeColor=none;")}q.vertex=
+!0;v.insert(q);q.value=g(h.Text);q.style+=l(h,x);v.style+=c(v.style,h,e,v);break;case "UMLMultiplicityBlock":v.style+="strokeColor=none;fillColor=none;";q=new mxCell("",new mxGeometry(.1*t,0,.9*t,.9*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(0,.1*r,.9*t,.9*r),"part=1;");u.vertex=!0;v.insert(u);u.value=g(h.Text);u.style+=l(h.Text,x);u.style+=c(u.style,h,e,u,x);break;case "UMLConstraintBlock":var tb=new mxCell("",new mxGeometry(0,0,.25*r,r),"shape=curlyBracket;rounded=1;");
+tb.vertex=!0;v.insert(tb);var ub=new mxCell("",new mxGeometry(t-.25*r,0,.25*r,r),"shape=curlyBracket;rounded=1;flipH=1;");ub.vertex=!0;v.insert(ub);fa=new mxCell("",new mxGeometry(.25*r,0,t-.5*r,r),"strokeColor=none;fillColor=none;");fa.vertex=!0;fa.value=g(h);v.insert(fa);v.style="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);tb.style+=M(h,e,tb);ub.style+=M(h,e,ub);fa.style+=d(h,fa);tb.style+=c(tb.style,h,e,tb);ub.style+=c(ub.style,h,e,ub);fa.style+=c(fa.style,h,e,fa,x);break;case "UMLTextBlock":v.value=
+g(h.Text);v.style+="strokeColor=none;"+l(h.Text,x);v.style+=c(v.style,h,e,v,x);break;case "BPMNActivity":v.value=g(h.Text);switch(h.bpmnActivityType){case 1:v.style+=l(h.Text,x);break;case 2:v.style+="shape=ext;double=1;"+l(h.Text,x);break;case 3:v.style+="shape=ext;dashed=1;dashPattern=2 1;"+l(h.Text,x);break;case 4:v.style+="shape=ext;strokeWidth=2;"+l(h.Text,x)}if(0!=h.bpmnTaskType){switch(h.bpmnTaskType){case 1:q=new mxCell("",new mxGeometry(0,0,19,12),"shape=message;");q.geometry.offset=new mxPoint(4,
+7);break;case 2:q=new mxCell("",new mxGeometry(0,0,19,12),"shape=message;");q.geometry.offset=new mxPoint(4,7);break;case 3:q=new mxCell("",new mxGeometry(0,0,15,15),"shape=mxgraph.bpmn.user_task;");q.geometry.offset=new mxPoint(4,5);break;case 4:q=new mxCell("",new mxGeometry(0,0,15,10),"shape=mxgraph.bpmn.manual_task;");q.geometry.offset=new mxPoint(4,7);break;case 5:q=new mxCell("",new mxGeometry(0,0,18,13),"shape=mxgraph.bpmn.business_rule_task;");q.geometry.offset=new mxPoint(4,7);break;case 6:q=
+new mxCell("",new mxGeometry(0,0,15,15),"shape=mxgraph.bpmn.service_task;");q.geometry.offset=new mxPoint(4,5);break;case 7:q=new mxCell("",new mxGeometry(0,0,15,15),"shape=mxgraph.bpmn.script_task;"),q.geometry.offset=new mxPoint(4,5)}if(1==h.bpmnTaskType){var Kb=O(h,e),I=D(h,e),I=I.replace("strokeColor","fillColor"),Kb=Kb.replace("fillColor","strokeColor");""==I&&(I="fillColor=#000000;");""==Kb&&(Kb="strokeColor=#ffffff;");q.style+=Kb+I+"part=1;"}else q.style+=O(h,e)+D(h,e)+"part=1;";q.geometry.relative=
+!0;q.vertex=!0;v.insert(q)}var uc=0;0!=h.bpmnActivityMarker1&&uc++;0!=h.bpmnActivityMarker2&&uc++;var Ga=0;1==uc?Ga=-7.5:2==uc&&(Ga=-19);if(0!=h.bpmnActivityMarker1){switch(h.bpmnActivityMarker1){case 1:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=plus;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 2:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=mxgraph.bpmn.loop;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 3:q=new mxCell("",
+new mxGeometry(.5,1,15,15),"shape=parallelMarker;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 4:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=parallelMarker;direction=south;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 5:q=new mxCell("",new mxGeometry(.5,1,15,10),"shape=mxgraph.bpmn.ad_hoc;strokeColor=none;flipH=1;part=1;");q.geometry.offset=new mxPoint(Ga,-17);I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");
+q.style+=I;break;case 6:q=new mxCell("",new mxGeometry(.5,1,15,11),"shape=mxgraph.bpmn.compensation;part=1;"),q.geometry.offset=new mxPoint(Ga,-18),q.style+=O(h,e)+D(h,e)}q.geometry.relative=!0;q.vertex=!0;v.insert(q)}2==uc&&(Ga=5);if(0!=h.bpmnActivityMarker2){switch(h.bpmnActivityMarker2){case 1:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=plus;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 2:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=mxgraph.bpmn.loop;part=1;");
+q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 3:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=parallelMarker;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 4:q=new mxCell("",new mxGeometry(.5,1,15,15),"shape=parallelMarker;direction=south;part=1;");q.geometry.offset=new mxPoint(Ga,-20);q.style+=O(h,e)+D(h,e);break;case 5:q=new mxCell("",new mxGeometry(.5,1,15,10),"shape=mxgraph.bpmn.ad_hoc;strokeColor=none;flipH=1;part=1;");q.geometry.offset=
+new mxPoint(Ga,-17);I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");q.style+=I;break;case 6:q=new mxCell("",new mxGeometry(.5,1,15,11),"shape=mxgraph.bpmn.compensation;part=1;"),q.geometry.offset=new mxPoint(Ga,-18),q.style+=O(h,e)+D(h,e)}q.geometry.relative=!0;q.vertex=!0;v.insert(q)}v.style+=c(v.style,h,e,v);break;case "BPMNEvent":v.style+="shape=mxgraph.bpmn.shape;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);if(1==h.bpmnDashed)switch(h.bpmnEventGroup){case 0:v.style+=
+"outline=eventNonint;";break;case 1:v.style+="outline=boundNonint;";break;case 2:v.style+="outline=end;"}else switch(h.bpmnEventGroup){case 0:v.style+="outline=standard;";break;case 1:v.style+="outline=throwing;";break;case 2:v.style+="outline=end;"}switch(h.bpmnEventType){case 1:v.style+="symbol=message;";break;case 2:v.style+="symbol=timer;";break;case 3:v.style+="symbol=escalation;";break;case 4:v.style+="symbol=conditional;";break;case 5:v.style+="symbol=link;";break;case 6:v.style+="symbol=error;";
+break;case 7:v.style+="symbol=cancel;";break;case 8:v.style+="symbol=compensation;";break;case 9:v.style+="symbol=signal;";break;case 10:v.style+="symbol=multiple;";break;case 11:v.style+="symbol=parallelMultiple;";break;case 12:v.style+="symbol=terminate;"}v.style+=c(v.style,h,e,v,x);break;case "BPMNConversation":v.style+="shape=hexagon;perimeter=hexagonPerimeter2;";v.value=g(h.Text);v.style=0==h.bpmnConversationType?v.style+ja(h):v.style+"strokeWidth=2;";h.bpmnIsSubConversation&&(q=new mxCell("",
+new mxGeometry(.5,1,12,12),"shape=plus;part=1;"),q.geometry.offset=new mxPoint(-6,-17),q.style+=O(h,e)+D(h,e),q.geometry.relative=!0,q.vertex=!0,v.insert(q));v.style+=c(v.style,h,e,v,x);break;case "BPMNGateway":v.style+="shape=mxgraph.bpmn.shape;perimeter=rhombusPerimeter;background=gateway;";switch(h.bpmnGatewayType){case 0:v.style+="outline=none;symbol=general;";break;case 1:v.style+="outline=none;symbol=exclusiveGw;";break;case 2:v.style+="outline=catching;symbol=multiple;";break;case 3:v.style+=
+"outline=none;symbol=parallelGw;";break;case 4:v.style+="outline=end;symbol=general;";break;case 5:v.style+="outline=standard;symbol=multiple;";break;case 6:v.style+="outline=none;symbol=complexGw;";break;case 7:v.style+="outline=standard;symbol=parallelMultiple;"}v.style+=c(v.style,h,e,v);break;case "BPMNData":v.style+="shape=note;size=14;";switch(h.bpmnDataType){case 1:q=new mxCell("",new mxGeometry(.5,1,12,10),"shape=parallelMarker;part=1;");q.geometry.offset=new mxPoint(-6,-15);q.style+=O(h,e)+
+D(h,e);q.geometry.relative=!0;q.vertex=!0;v.insert(q);break;case 2:q=new mxCell("",new mxGeometry(0,0,12,10),"shape=singleArrow;part=1;arrowWidth=0.4;arrowSize=0.4;");q.geometry.offset=new mxPoint(3,3);q.style+=O(h,e)+D(h,e);q.geometry.relative=!0;q.vertex=!0;v.insert(q);v.style+="verticalLabelPosition=bottom;verticalAlign=top;";U=new mxCell("",new mxGeometry(0,0,t,20),"strokeColor=none;fillColor=none;");U.geometry.offset=new mxPoint(0,14);U.geometry.relative=!0;U.vertex=!0;v.insert(U);U.value=g(h.Text);
+U.style+=l(h,x);break;case 3:q=new mxCell("",new mxGeometry(0,0,12,10),"shape=singleArrow;part=1;arrowWidth=0.4;arrowSize=0.4;"),q.geometry.offset=new mxPoint(3,3),q.style+=D(h,e),q.geometry.relative=!0,q.vertex=!0,v.insert(q),I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),q.style+=I,U=new mxCell("",new mxGeometry(0,0,t,20),"strokeColor=none;fillColor=none;"),U.geometry.offset=new mxPoint(0,14),U.geometry.relative=!0,U.vertex=!0,v.insert(U),U.value=g(h.Text),U.style+=
+l(h,x)}v.style+=c(v.style,h,e,v);break;case "BPMNBlackPool":v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,t,r),"fillColor=#000000;strokeColor=none;opacity=30;");q.vertex=!0;v.insert(q);break;case "DFDExternalEntityBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);q=new mxCell("",new mxGeometry(0,0,.95*t,.95*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.05*t,.05*r,.95*t,.95*r),"part=1;");
+u.vertex=!0;v.insert(u);u.value=g(h.Text);u.style+=l(h.Text,x);u.style+=c(u.style,h,e,u,x);break;case "GSDFDDataStoreBlock":v.value=g(h.Text);v.style+="shape=partialRectangle;right=0;"+l(h.Text,x);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,.2*t,r),"part=1;");q.vertex=!0;v.insert(q);q.value=g(h.Number);q.style+=l(h.Number,x);q.style+=c(q.style,h,e,q,x);break;case "DefaultTableBlock":try{for(var Hb=h.RowHeights.length,Ib=h.ColWidths.length,Ic=[],vc=[],m=0;m<Hb;m++)Ic[m]=.6*h.RowHeights[m];
+for(Q=0;Q<Ib;Q++)vc[Q]=.6*h.ColWidths[Q];v.style="group;dropTarget=0;";var ad=h.BandedColor1,bd=h.BandedColor2,Pd=h.BandedRows,td=h.BandedCols,Jc=h.HideH,Qd=h.HideV,ud=h.TextVAlign,vd=h.FillColor,wd=h.StrokeStyle;delete h.StrokeStyle;for(var Rd=ga(vd,"fillOpacity"),xd=h.LineColor,Sd=ga(xd,"strokeOpacity"),oa=0,wc={},m=0;m<Hb;m++){ea=0;r=Ic[m];for(Q=0;Q<Ib;Q++){var Na=m+","+Q;if(wc[Na])ea+=vc[Q];else{for(var Kc=h["CellFill_"+Na],cd=h["NoBand_"+Na],Lc=h["CellSize_"+Na],mb=h["Cell_"+Na],yd=h["Cell_"+
+Na+"_VAlign"],Td=h["Cell_"+Na+"_TRotation"],Ud=h["CellBorderWidthH_"+Na],Vd=h["CellBorderColorH_"+Na],Wd=h["CellBorderStrokeStyleH_"+Na],Xd=h["CellBorderWidthV_"+Na],Yd=h["CellBorderColorV_"+Na],Zd=h["CellBorderStrokeStyleV_"+Na],zd=Jc?Yd:Vd,Ad=ga(zd,"strokeOpacity"),Bd=Jc?Xd:Ud,Cd=Jc?Zd:Wd,Kc=Pd&&!cd?0==m%2?ad:td&&!cd?0==Q%2?ad:bd:bd:td&&!cd?0==Q%2?ad:bd:Kc,$d=ga(Kc,"fillOpacity")||Rd,t=vc[Q],Dd=r,Rb=t,Ta=m+1;Ta<m+Lc.h;Ta++)if(null!=Ic[Ta]){Dd+=Ic[Ta];wc[Ta+","+Q]=!0;for(var Lb=Q+1;Lb<Q+Lc.w;Lb++)wc[Lb+
+","+Q]=!0}for(Ta=Q+1;Ta<Q+Lc.w;Ta++)if(null!=vc[Ta])for(Rb+=vc[Ta],wc[m+","+Ta]=!0,Lb=m+1;Lb<m+Lc.h;Lb++)wc[Lb+","+Ta]=!0;var R=new mxCell("",new mxGeometry(ea,oa,Rb,Dd),"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;"+(Qd?"left=0;right=0;":"")+(Jc?"top=0;bottom=0;":"")+Va(mxConstants.STYLE_FILLCOLOR,ba(Kc),ba(vd))+Va(mxConstants.STYLE_STROKECOLOR,ba(zd),ba(xd))+(null!=Bd?Va(mxConstants.STYLE_STROKEWIDTH,Math.round(.6*parseFloat(Bd)),"1"):"")+(Ad?Ad:Sd)+$d+"verticalAlign="+(yd?yd:ud?
+ud:"middle")+";"+na({StrokeStyle:Cd?Cd:wd?wd:"solid"})+(Td?"horizontal=0;":""));R.vertex=!0;R.value=g(mb);R.style+=c(R.style,h,e,R,x)+(x?"":a(mb)+d(mb)+k(mb)+w(mb,R)+y(mb)+z(mb)+A(mb)+B(mb))+C(mb)+E(mb);v.insert(R);ea+=t}}oa+=r}}catch(Md){}break;case "VSMDedicatedProcessBlock":case "VSMProductionControlBlock":v.style+="shape=mxgraph.lean_mapping.manufacturing_process;spacingTop=15;";"VSMDedicatedProcessBlock"==b.Class?v.value=g(h.Text):"VSMProductionControlBlock"==b.Class&&(v.value=g(h.Resources));
+v.style+=c(v.style,h,e,v,x);"VSMDedicatedProcessBlock"==b.Class&&(q=new mxCell("",new mxGeometry(0,1,11,9),"part=1;shape=mxgraph.lean_mapping.operator;"),q.geometry.relative=!0,q.geometry.offset=new mxPoint(4,-13),q.vertex=!0,v.insert(q),q.style+=c(q.style,h,e,q));U=new mxCell("",new mxGeometry(0,0,t,15),"strokeColor=none;fillColor=none;part=1;");U.vertex=!0;v.insert(U);U.value=g(h.Title);U.style+=l(h.Title,x);break;case "VSMSharedProcessBlock":v.style+="shape=mxgraph.lean_mapping.manufacturing_process_shared;spacingTop=-5;verticalAlign=top;";
+v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);U=new mxCell("",new mxGeometry(.1*t,.3*r,.8*t,.6*r),"part=1;");U.vertex=!0;v.insert(U);U.value=g(h.Resource);U.style+=l(h.Resource,x);U.style+=c(U.style,h,e,U,x);break;case "VSMWorkcellBlock":v.style+="shape=mxgraph.lean_mapping.work_cell;verticalAlign=top;spacingTop=-2;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);break;case "VSMSafetyBufferStockBlock":case "VSMDatacellBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);var Ca=
+r,Za=parseInt(h.Cells),N=c("part=1;",h,e,v);0<Za&&(Ca/=Za);H=[];qa=[];for(m=1;m<=Za;m++)H[m]=new mxCell("",new mxGeometry(0,(m-1)*Ca,t,Ca),N),H[m].vertex=!0,v.insert(H[m]),H[m].value=g(h["cell_"+m]),H[m].style+=l(h["cell_"+m],x);break;case "VSMInventoryBlock":v.style+="shape=mxgraph.lean_mapping.inventory_box;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);break;case "VSMSupermarketBlock":v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);Ca=r;Za=
+parseInt(h.Cells);N=c("part=1;fillColor=none;",h,e,v);0<Za&&(Ca/=Za);H=[];Sa=[];for(m=1;m<=Za;m++)H[m]=new mxCell("",new mxGeometry(.5*t,(m-1)*Ca,.5*t,Ca),"shape=partialRectangle;left=0;"+N),H[m].vertex=!0,v.insert(H[m]),Sa[m]=new mxCell("",new mxGeometry(0,(m-1)*Ca,t,Ca),"strokeColor=none;fillColor=none;part=1;"),Sa[m].vertex=!0,v.insert(Sa[m]),Sa[m].value=g(h["cell_"+m]),Sa[m].style+=l(h["cell_"+m],x);break;case "VSMFIFOLaneBlock":v.style+="shape=mxgraph.lean_mapping.fifo_sequence_flow;fontStyle=0;fontSize=18";
+v.style+=c(v.style,h,e,v);v.value="FIFO";break;case "VSMGoSeeProductionBlock":v.style+="shape=ellipse;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.17*t,.2*r,13,6),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;whiteSpace=wrap;html=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "VSMProductionKanbanBatchBlock":v.style+="strokeColor=none;fillColor=none;";N="shape=card;size=18;flipH=1;part=1;";q=new mxCell("",new mxGeometry(.1*
+t,0,.9*t,.8*r),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;"+N);q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.05*t,.1*r,.9*t,.8*r),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;"+N);u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);var F=new mxCell("",new mxGeometry(0,.2*r,.9*t,.8*r),"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1;part=1;whiteSpace=wrap;html=1;spacing=2;"+N);F.vertex=!0;v.insert(F);
+F.value=g(h.Text);F.style+=c(F.style,h,e,F,x);break;case "AWSRoundedRectangleContainerBlock2":v.style+="strokeColor=none;fillColor=none;";h.Spotfleet?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,35,40),"strokeColor=none;shape=mxgraph.aws3.spot_instance;fillColor=#f58536;"),
+u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.Beanstalk?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,30,40),"strokeColor=none;shape=mxgraph.aws3.elastic_beanstalk;fillColor=#759C3E;"),
+u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.EC2?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,32,40),"strokeColor=none;shape=mxgraph.aws3.ec2;fillColor=#F58534;"),u.geometry.relative=
+!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.Subnet?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,32,40),"strokeColor=none;shape=mxgraph.aws3.permissions;fillColor=#146EB4;"),u.geometry.relative=!0,u.geometry.offset=
+new mxPoint(30,0),u.vertex=!0,v.insert(u)):h.VPC?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,60,40),"strokeColor=none;shape=mxgraph.aws3.virtual_private_cloud;fillColor=#146EB4;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,
+0),u.vertex=!0,v.insert(u)):h.AWS?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,60,40),"strokeColor=none;shape=mxgraph.aws3.cloud;fillColor=#F58534;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):
+h.Corporate?(q=new mxCell("",new mxGeometry(0,0,t,r-20),"resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;"),q.geometry.offset=new mxPoint(0,20),q.geometry.relative=!0,q.vertex=!0,v.insert(q),q.value=g(h.Title),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,0,25,40),"strokeColor=none;shape=mxgraph.aws3.corporate_data_center;fillColor=#7D7C7C;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(30,0),u.vertex=!0,v.insert(u)):
+(v.style="resizeWidth=1;resizeHeight=1;fillColor=none;align=center;verticalAlign=bottom;spacing=2;rounded=1;arcSize=10;",v.value=g(h.Title),v.style+=c(v.style,h,e,v,x));break;case "AWSElasticComputeCloudBlock2":v.style+="strokeColor=none;shape=mxgraph.aws3.ec2;verticalLabelPosition=bottom;align=center;verticalAlign=top;";v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);break;case "AWSRoute53Block2":v.style+="strokeColor=none;shape=mxgraph.aws3.route_53;verticalLabelPosition=bottom;align=center;verticalAlign=top;";
+v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);break;case "AWSRDBSBlock2":v.style+="strokeColor=none;shape=mxgraph.aws3.rds;verticalLabelPosition=bottom;align=center;verticalAlign=top;";v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);break;case "NET_RingNetwork":v.style+="strokeColor=none;fillColor=none;";R=new mxCell("",new mxGeometry(.25*t,.25*r,.5*t,.5*r),"html=1;shape=ellipse;perimeter=ellipsePerimeter;strokeColor=#29AAE1;strokeWidth=2;");R.vertex=!0;v.insert(R);var da=[R];R.style+=O(h,e);var V=
+new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=none;dashed=0;html=1;strokeColor=#29AAE1;strokeWidth=2;");V.geometry.relative=!0;V.edge=!0;ob(.5*t,0,V,n,f,da,v,R);ob(.855*t,.145*r,V,n,f,da,v,R);ob(t,.5*r,V,n,f,da,v,R);ob(.855*t,.855*r,V,n,f,da,v,R);ob(.5*t,r,V,n,f,da,v,R);ob(.145*t,.855*r,V,n,f,da,v,R);ob(0,.5*r,V,n,f,da,v,R);ob(.145*t,.145*r,V,n,f,da,v,R);break;case "NET_Ethernet":v.style+="strokeColor=none;fillColor=none;";R=new mxCell("",new mxGeometry(0,.5*r-10,t,20),
+"shape=mxgraph.networks.bus;gradientColor=none;gradientDirection=north;fontColor=#ffffff;perimeter=backbonePerimeter;backboneSize=20;fillColor=#29AAE1;strokeColor=#29AAE1;");R.vertex=!0;v.insert(R);da=[R];V=new mxCell("",new mxGeometry(0,0,0,0),"strokeColor=#29AAE1;edgeStyle=none;rounded=0;endArrow=none;html=1;strokeWidth=2;");V.geometry.relative=!0;V.edge=!0;for(var da=[R],xc=t/h.NumTopNodes,m=0;m<h.NumTopNodes;m++)ob(.5*xc+m*xc,0,V,n,f,da,v,R);xc=t/h.NumBottomNodes;for(m=0;m<h.NumBottomNodes;m++)ob(.5*
+xc+m*xc,r,V,n,f,da,v,R);break;case "EE_OpAmp":v.style+="shape=mxgraph.electrical.abstract.operational_amp_1;";v.value=g(h.Title);v.style+=c(v.style,h,e,v,x);h.ToggleCharge&&(v.style+="flipV=1;");break;case "EIMessageChannelBlock":case "EIDatatypeChannelBlock":case "EIInvalidMessageChannelBlock":case "EIDeadLetterChannelBlock":case "EIGuaranteedDeliveryBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);"EIMessageChannelBlock"==b.Class?(q=
+new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.messageChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIDatatypeChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.dataChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIInvalidMessageChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.invalidMessageChannel;fillColor=#818181;part=1;"),q.geometry.offset=
+new mxPoint(.45*-t,0)):"EIDeadLetterChannelBlock"==b.Class?(q=new mxCell("",new mxGeometry(.5,.5,.9*t,20),"shape=mxgraph.eip.deadLetterChannel;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(.45*-t,0)):"EIGuaranteedDeliveryBlock"==b.Class&&(q=new mxCell("",new mxGeometry(.5,.5,20,27),"shape=cylinder;fillColor=#818181;part=1;"),q.geometry.offset=new mxPoint(-10,-7));q.geometry.relative=!0;q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);V=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");
+V.geometry.relative=!0;V.edge=!0;sa(.15*t,.25*r,.85*t,.25*r,V,n,f,da,v,R);break;case "EIChannelAdapterBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,.07*r,.21*t,.86*r),"fillColor=#FFFF33;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.26*t,.09*r,.2*t,.82*r),"shape=mxgraph.eip.channel_adapter;fillColor=#4CA3D9;part=1;");u.vertex=!0;v.insert(u);u.style+=c(u.style,
+h,e,u);F=new mxCell("",new mxGeometry(1,.5,.35*t,20),"shape=mxgraph.eip.messageChannel;fillColor=#818181;part=1;");F.geometry.relative=!0;F.geometry.offset=new mxPoint(.4*-t,-10);F.vertex=!0;v.insert(F);F.style+=c(F.style,h,e,F);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=1;exitY=0.5;entryX=0;entryY=0.5;endArrow=none;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=2;");K.geometry.relative=!0;K.edge=!0;q.insertEdge(K,!0);u.insertEdge(K,!1);K.style+=D(h,e);
+n.push(f.addCell(K,null,null,null,null));J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=1;exitY=0.5;entryX=0;entryY=0.5;endArrow=block;startArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=2;startFill=1;startSize=2;");J.geometry.relative=!0;J.edge=!0;u.insertEdge(J,!0);F.insertEdge(J,!1);n.push(f.addCell(J,null,null,null,null));break;case "EIMessageBlock":case "EICommandMessageBlock":case "EIDocumentMessageBlock":case "EIEventMessageBlock":v.style+=
+"strokeColor=none;fillColor=none;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,17,17),"shape=ellipse;fillColor=#808080;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);for(var yc=h.Messages,dd=(r-17)/yc,u=[],V=[],m=0;m<yc;m++){var zc=dd*(m+1)-3;u[m]=new mxCell("",new mxGeometry(t-20,zc,20,20),"part=1;");u[m].vertex=!0;v.insert(u[m]);switch(b.Class){case "EIMessageBlock":u[m].value=g(h["message_"+(m+1)]);
+u.style+=l(h["message_"+(m+1)],x);break;case "EICommandMessageBlock":u[m].value="C";u[m].style+="fontStyle=1;fontSize=11;";break;case "EIDocumentMessageBlock":u[m].value="D";u[m].style+="fontStyle=1;fontSize=11;";break;case "EIEventMessageBlock":u[m].value="E",u[m].style+="fontStyle=1;fontSize=11;"}u[m].style+=c(u[m].style,h,e,u[m]);V[m]=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;");V[m].geometry.relative=!0;V[m].edge=
+!0;q.insertEdge(V[m],!1);u[m].insertEdge(V[m],!0);V[m].style+=c(V[m].style,h,e,V[m]);var Ab=[];Ab.push(new mxPoint(ea+8.5,oa+zc+10));V[m].geometry.points=Ab;n.push(f.addCell(V[m],null,null,null,null))}break;case "EIMessageEndpointBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.45*t,.25*r,.3*t,.5*r),"part=1;fillColor=#ffffff");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);V=new mxCell("",new mxGeometry(0,
+0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");V.geometry.relative=!0;V.edge=!0;sa(0,.5*r,.4*t,.5*r,V,n,f,da,v,R);break;case "EIPublishSubscribeChannelBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);var K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");K.geometry.relative=
+!0;K.edge=!0;sa(.05*t,.5*r,.85*t,.5*r,K,n,f,da,v,R);var J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");J.geometry.relative=!0;J.edge=!0;sa(.05*t,.5*r,.85*t,.15*r,J,n,f,da,v,R);var S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");S.geometry.relative=!0;S.edge=!0;sa(.05*
+t,.5*r,.85*t,.85*r,S,n,f,da,v,R);break;case "EIMessageBusBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");K.geometry.relative=!0;K.edge=!0;K.style+=D(h,e);sa(.05*t,.5*r,.95*t,.5*r,K,n,f,da,v,R);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");
+J.geometry.relative=!0;J.edge=!0;J.style+=D(h,e);sa(.3*t,.1*r,.3*t,.5*r,J,n,f,da,v,R);S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");S.geometry.relative=!0;S.edge=!0;S.style+=D(h,e);sa(.7*t,.1*r,.7*t,.5*r,S,n,f,da,v,R);var ma=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;dashed=0;html=1;strokeWidth=1;endFill=1;endSize=4;startArrow=block;startFill=1;startSize=4;");
+ma.geometry.relative=!0;ma.edge=!0;ma.style+=D(h,e);sa(.5*t,.5*r,.5*t,.9*r,ma,n,f,da,v,R);break;case "EIRequestReplyBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.2*t,.21*r,.16*t,.24*r),"part=1;fillColor=#ffffff;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");
+K.geometry.relative=!0;K.edge=!0;sa(.45*t,.33*r,.8*t,.33*r,K,n,f,da,v,R);u=new mxCell("",new mxGeometry(.64*t,.55*r,.16*t,.24*r),"part=1;fillColor=#ffffff;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=none;rounded=0;endArrow=block;dashed=0;html=1;strokeColor=#818181;strokeWidth=1;endFill=1;endSize=6;");J.geometry.relative=!0;J.edge=!0;sa(.55*t,.67*r,.2*t,.67*r,J,n,f,da,v,R);break;case "EIReturnAddressBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
+v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.1*t,.15*r,.8*t,.7*r),"part=1;shape=mxgraph.eip.retAddr;fillColor=#FFE040;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EICorrelationIDBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.04*t,.06*r,.18*t,.28*r),"shape=ellipse;fillColor=#808080;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",
+new mxGeometry(.2*t,.56*r,.2*t,.32*r),"part=1;");u.vertex=!0;v.insert(u);u.value="A";u.style+="fontStyle=1;fontSize=11;";q.style+=c(q.style,h,e,q);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;part=1;");K.geometry.relative=!0;K.edge=!0;q.insertEdge(K,!1);u.insertEdge(K,!0);K.style+=c(K.style,h,e,K);Ab=[];Ab.push(new mxPoint(ea+.13*t,oa+.72*r));K.geometry.points=Ab;n.push(f.addCell(K,null,null,null,null));F=new mxCell("",
+new mxGeometry(.6*t,.06*r,.18*t,.28*r),"shape=ellipse;fillColor=#808080;part=1;");F.vertex=!0;v.insert(F);F.style+=D(h,e)+ja(h);F.style+=c(F.style,h,e,F);P=new mxCell("",new mxGeometry(.76*t,.56*r,.2*t,.32*r),"part=1;");P.vertex=!0;v.insert(P);P.style+=D(h,e)+M(h,e,P)+ja(h)+na(h);P.value="B";P.style+="fontStyle=1;fontSize=11;fillColor=#ffffff;";P.style+=c(P.style,h,e,P);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;part=1;");
+J.geometry.relative=!0;J.edge=!0;F.insertEdge(J,!1);P.insertEdge(J,!0);J.style+=c(J.style,h,e,J);var Ed=[];Ed.push(new mxPoint(ea+.69*t,oa+.72*r));J.geometry.points=Ed;n.push(f.addCell(J,null,null,null,null));S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;endSize=6;part=1;");S.geometry.relative=!0;S.edge=!0;q.insertEdge(S,!1);F.insertEdge(S,!0);S.style+=c(S.style,h,e,S);n.push(f.addCell(S,null,null,null,null));break;case "EIMessageSequenceBlock":v.style+=
+"verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("1",new mxGeometry(.2*t,.4*r,.1*t,.19*r),"fontStyle=1;fillColor=#ffffff;fontSize=11;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("2",new mxGeometry(.45*t,.4*r,.1*t,.19*r),"fontStyle=1;fillColor=#ffffff;fontSize=11;part=1;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);F=new mxCell("3",new mxGeometry(.7*t,.4*r,.1*t,.19*r),"fontStyle=1;fillColor=#ffffff;fontSize=11;part=1;");
+F.vertex=!0;v.insert(F);F.style+=c(F.style,h,e,F);K=new mxCell("",new mxGeometry(0,0,0,0),"curved=1;endArrow=block;html=1;endSize=3;part=1;");q.insertEdge(K,!1);u.insertEdge(K,!0);K.geometry.points=[new mxPoint(ea+.375*t,oa+.15*r)];K.geometry.relative=!0;K.edge=!0;K.style+=c(K.style,h,e,K);n.push(f.addCell(K,null,null,null,null));J=new mxCell("",new mxGeometry(0,0,0,0),"curved=1;endArrow=block;html=1;endSize=3;part=1;");u.insertEdge(J,!1);F.insertEdge(J,!0);J.geometry.points=[new mxPoint(ea+.675*
+t,oa+.15*r)];J.geometry.relative=!0;J.edge=!0;J.style+=c(J.style,h,e,J);n.push(f.addCell(J,null,null,null,null));break;case "EIMessageExpirationBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.3*t,.2*r,.4*t,.6*r),"shape=mxgraph.ios7.icons.clock;fillColor=#ffffff;flipH=1;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EIMessageBrokerBlock":v.style+="strokeColor=none;fillColor=none;verticalLabelPosition=bottom;verticalAlign=top;";
+v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.38*t,.42*r,.24*t,.16*r),"part=1;fillColor=#aefe7d;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);u=new mxCell("",new mxGeometry(.38*t,0,.24*t,.16*r),"part=1;");u.vertex=!0;v.insert(u);u.style+=c(u.style,h,e,u);F=new mxCell("",new mxGeometry(.76*t,.23*r,.24*t,.16*r),"");F.vertex=!0;v.insert(F);F.style=u.style;var P=new mxCell("",new mxGeometry(.76*t,.61*r,.24*t,.16*r),"");P.vertex=!0;v.insert(P);P.style=u.style;var Mc=
+new mxCell("",new mxGeometry(.38*t,.84*r,.24*t,.16*r),"");Mc.vertex=!0;v.insert(Mc);Mc.style=u.style;var Nc=new mxCell("",new mxGeometry(0,.61*r,.24*t,.16*r),"");Nc.vertex=!0;v.insert(Nc);Nc.style=u.style;var Oc=new mxCell("",new mxGeometry(0,.23*r,.24*t,.16*r),"");Oc.vertex=!0;v.insert(Oc);Oc.style=u.style;K=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(K,!1);u.insertEdge(K,!0);K.edge=!0;K.style+=c(K.style,h,e,K);n.push(f.addCell(K,null,null,null,null));J=new mxCell("",
+new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(J,!1);F.insertEdge(J,!0);J.edge=!0;J.style+=c(J.style,h,e,J);n.push(f.addCell(J,null,null,null,null));S=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(S,!1);P.insertEdge(S,!0);S.edge=!0;S.style+=c(S.style,h,e,S);n.push(f.addCell(S,null,null,null,null));ma=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(ma,!1);Mc.insertEdge(ma,!0);ma.edge=!0;ma.style+=c(ma.style,h,e,ma);n.push(f.addCell(ma,
+null,null,null,null));var Bb=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(Bb,!1);Nc.insertEdge(Bb,!0);Bb.edge=!0;Bb.style+=c(Bb.style,h,e,Bb);n.push(f.addCell(Bb,null,null,null,null));var Cb=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;part=1;");q.insertEdge(Cb,!1);Oc.insertEdge(Cb,!0);Cb.edge=!0;Cb.style+=c(Cb.style,h,e,Cb);n.push(f.addCell(Cb,null,null,null,null));break;case "EIDurableSubscriberBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
+v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);K=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;endFill=1;endSize=6;");K.geometry.relative=!0;K.edge=!0;sa(.05*t,.5*r,.6*t,.25*r,K,n,f,da,v,R);J=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;rounded=0;endArrow=block;endFill=1;endSize=6;");J.geometry.relative=!0;J.edge=!0;sa(.05*t,.5*r,.6*t,.75*r,J,n,f,da,v,R);q=new mxCell("",new mxGeometry(.7*t,.1*r,.15*t,.32*r),"shape=mxgraph.eip.durable_subscriber;part=1;fillColor=#818181;");
+q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EIControlBusBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.25*t,.25*r,.5*t,.5*r),"shape=mxgraph.eip.control_bus;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "EIMessageHistoryBlock":v.style+="strokeColor=none;fillColor=none;verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);
+q=new mxCell("",new mxGeometry(0,0,17,17),"shape=ellipse;fillColor=#808080;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);F=new mxCell("",new mxGeometry(t-45,30,30,20),"shape=mxgraph.mockup.misc.mail2;fillColor=#FFE040;part=1;");F.vertex=!0;v.insert(F);F.style+=c(F.style,h,e,F);S=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;");S.geometry.relative=!0;S.edge=!0;q.insertEdge(S,!1);F.insertEdge(S,!0);S.style+=
+c(S.style,h,e,S);S.geometry.points=[new mxPoint(ea+8.5,oa+40)];n.push(f.addCell(S,null,null,null,null));P=new mxCell("",new mxGeometry(t-45,r-20,20,20),"part=1;");P.vertex=!0;v.insert(P);P.value=g(h.message_0);P.style+=l(h.message_0,x);P.style+=c(P.style,h,e,P,x);ma=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;");ma.geometry.relative=!0;ma.edge=!0;q.insertEdge(ma,!1);P.insertEdge(ma,!0);ma.style+=c(ma.style,h,e,ma);
+ma.geometry.points=[new mxPoint(ea+8.5,oa+r-10)];n.push(f.addCell(ma,null,null,null,null));yc=h.HistoryMessages;dd=(r-75)/yc;u=[];V=[];for(m=0;m<yc;m++)zc=dd*(m+1)+30,u[m]=new mxCell("",new mxGeometry(t-20,zc,20,20),"part=1;"),u[m].vertex=!0,u[m].value=g(h["message_"+(m+1)]),u.style+=l(h["message_"+(m+1)],x),v.insert(u[m]),u[m].style+=c(u[m].style,h,e,u[m],x),V[m]=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;"),V[m].geometry.relative=
+!0,V[m].edge=!0,F.insertEdge(V[m],!1),u[m].insertEdge(V[m],!0),V[m].style+=c(V[m].style,h,e,V[m]),Ab=[],Ab.push(new mxPoint(ea+t-30,oa+zc+10)),V[m].geometry.points=Ab,n.push(f.addCell(V[m],null,null,null,null));break;case "fpDoor":v.style+="shape=mxgraph.floorplan.doorRight;";0>h.DoorAngle&&(v.style+="flipV=1;");v.style+=c(v.style,h,e,v);break;case "fpDoubleDoor":v.style+="shape=mxgraph.floorplan.doorDouble;";0<h.DoorAngle&&(v.style+="flipV=1;");v.style+=c(v.style,h,e,v);break;case "fpRestroomLights":v.style+=
+"strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);q=new mxCell("",new mxGeometry(0,0,t,.25*r),"part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);for(var u=[],Fd=.02*t,ed=(t-2*Fd)/h.LightCount,Gd=.8*ed,m=0;m<h.LightCount;m++)u[m]=new mxCell("",new mxGeometry(Fd+ed*m+(ed-Gd)/2,.25*r,Gd,.75*r),"part=1;shape=ellipse;"),u[m].vertex=!0,v.insert(u[m]),u[m].style+=c(u[m].style,h,e,u[m]);break;case "fpRestroomSinks":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);
+for(var q=[],Hd=t/h.SinkCount,m=0;m<h.SinkCount;m++)q[m]=new mxCell("",new mxGeometry(Hd*m,0,Hd,r),"part=1;shape=mxgraph.floorplan.sink_2;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]);break;case "fpRestroomStalls":v.style+="strokeColor=none;fillColor=none;";var Ha=.1*t/h.StallCount,q=new mxCell("",new mxGeometry(0,0,Ha,r),"fillColor=#000000;part=1;");q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);for(var Oa=(t-Ha)/h.StallCount,fd=[],Ac=[],Bc=[],Cc=[],I=D(h,e),I=""==I?"#000000;":
+I.replace("stokreColor=",""),Pc="part=1;fillColor="+I,Pc=Pc+c(Pc,h,e,v),gd=c("",h,e,v),m=0;m<h.StallCount;m++)fd[m]=new mxCell("",new mxGeometry((m+1)*Oa,0,Ha,r),Pc),fd[m].vertex=!0,v.insert(fd[m]),Bc[m]=new mxCell("",new mxGeometry(Ha+m*Oa+.05*(Oa-Ha),r-.92*(Oa-Ha),.9*(Oa-Ha),.92*(Oa-Ha)),"shape=mxgraph.floorplan.doorRight;flipV=1;part=1;"),Bc[m].vertex=!0,v.insert(Bc[m]),Bc[m].style+=gd,Ac[m]=new mxCell("",new mxGeometry(Ha+m*Oa+.2*(Oa-Ha),0,.6*(Oa-Ha),.8*(Oa-Ha)),"shape=mxgraph.floorplan.toilet;part=1;"),
+Ac[m].vertex=!0,v.insert(Ac[m]),Ac[m].style+=gd,Cc[m]=new mxCell("",new mxGeometry(Ha+m*Oa,.42*r,.15*(Oa-Ha),.12*(Oa-Ha)),"part=1;"),Cc[m].vertex=!0,v.insert(Cc[m]),Cc[m].style+=gd;break;case "PEOneToMany":v.style+="strokeColor=none;fillColor=none;";var Ua="edgeStyle=none;endArrow=none;part=1;";Ua.style+=c(Ua.style,h,e,Ua);var I=D(h,e),I=""==I?"#000000;":I.replace("strokeColor=",""),Db="shape=triangle;part=1;fillColor="+I,Db=Db+c(Db,h,e,v),K=new mxCell("",new mxGeometry(0,0,0,0),Ua);K.geometry.relative=
+!0;K.edge=!0;sa(0,.5*r,.65*t,.5*r,K,n,f,da,v,R);for(var L=r/h.numLines,J=[],Mb=[],m=0;m<h.numLines;m++)J[m]=new mxCell("",new mxGeometry(0,0,0,0),Ua),J[m].geometry.relative=!0,J[m].edge=!0,sa(.65*t,.5*r,.96*t,(m+.5)*L,J[m],n,f,da,v,R),Mb[m]=new mxCell("",new mxGeometry(.95*t,(m+.2)*L,.05*t,.6*L),Db),Mb[m].vertex=!0,v.insert(Mb[m]);break;case "PEMultilines":v.style+="strokeColor=none;fillColor=none;";Ua="edgeStyle=none;endArrow=none;part=1;";Ua.style+=c(Ua.style,h,e,Ua);I=D(h,e);I=""==I?"#000000;":
+I.replace("strokeColor=","");Db="shape=triangle;part=1;fillColor="+I;Db+=c(Db,h,e,v);L=r/h.numLines;J=[];Mb=[];for(m=0;m<h.numLines;m++)J[m]=new mxCell("",new mxGeometry(0,0,0,0),Ua),J[m].geometry.relative=!0,J[m].edge=!0,sa(0,(m+.5)*L,.96*t,(m+.5)*L,J[m],n,f,da,v,R),Mb[m]=new mxCell("",new mxGeometry(.95*t,(m+.2)*L,.05*t,.6*L),Db),Mb[m].vertex=!0,v.insert(Mb[m]);break;case "PEVesselBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);switch(h.vesselType){case 1:v.style+=
+"shape=mxgraph.pid.vessels.pressurized_vessel;";break;case 2:v.style+="shape=hexagon;perimeter=hexagonPerimeter2;size=0.10;direction=south;"}v.style+=c(v.style,h,e,v,x);break;case "PEClosedTankBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";v.value=g(h.Text);1==h.peakedRoof&&0==h.stumpType?v.style+="shape=mxgraph.pid.vessels.tank_(conical_roof);":1==h.stumpType&&(v.style+="shape=mxgraph.pid.vessels.tank_(boot);");v.style+=c(v.style,h,e,v,x);break;case "PEColumnBlock":v.style+="verticalLabelPosition=bottom;verticalAlign=top;";
+v.value=g(h.Text);v.style=0==h.columnType?v.style+"shape=mxgraph.pid.vessels.pressurized_vessel;":v.style+"shape=mxgraph.pid.vessels.tank;";v.style+=c(v.style,h,e,v,x);break;case "PECompressorTurbineBlock":v.style+="strokeColor=none;fillColor=none;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,.2*r,t,.6*r),"part=1;shape=trapezoid;perimeter=trapezoidPerimeter;direction=south;");q.vertex=!0;v.insert(q);q.style+=N;q.style+=c(q.style,h,e,q);N="endSize=4;endArrow=block;endFill=1;";
+0==h.compressorType?(K=new mxCell("",new mxGeometry(0,0,0,0),""),K.geometry.relative=!0,K.edge=!0,K.style+=N,K.style+=c(K.style,h,e,K),sa(0,0,0,.2*r,K,n,f,da,v,R),J=new mxCell("",new mxGeometry(0,0,0,0),""),J.geometry.relative=!0,J.edge=!0,J.style+=N,J.style+=c(J.style,h,e,J),sa(t,.67*r,t,r,J,n,f,da,v,R)):(q.style+="flipH=1;",K=new mxCell("",new mxGeometry(0,0,0,0),""),K.geometry.relative=!0,K.edge=!0,K.style+=N,K.style+=c(K.style,h,e,K),sa(0,0,0,.33*r,K,n,f,da,v,R),J=new mxCell("",new mxGeometry(0,
+0,0,0),""),J.geometry.relative=!0,J.edge=!0,J.style+=N,J.style+=c(J.style,h,e,J),sa(t,.8*r,t,r,J,n,f,da,v,R));1==h.centerLineType&&(S=new mxCell("",new mxGeometry(0,0,0,0),""),S.geometry.relative=!0,S.edge=!0,S.style+=N,S.style+=c(S.style,h,e,S),sa(.2*t,.5*r,.8*t,.5*r,S,n,f,da,v,R));break;case "PEMotorDrivenTurbineBlock":v.style+="shape=ellipse;";v.value=g(h.Text);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(.2*t,.2*r,.6*t,.6*r),"part=1;shape=trapezoid;perimeter=trapezoidPerimeter;direction=south;");
+q.vertex=!0;v.insert(q);q.style+=c(q.style,h,e,q);break;case "PEIndicatorBlock":case "PEIndicator2Block":case "PESharedIndicatorBlock":case "PEComputerIndicatorBlock":case "PESharedIndicator2Block":case "PEProgrammableIndicatorBlock":switch(b.Class){case "PEIndicatorBlock":v.style+="shape=mxgraph.pid2inst.discInst;";break;case "PEIndicator2Block":v.style+="shape=mxgraph.pid2inst.indicator;indType=inst;";break;case "PESharedIndicatorBlock":v.style+="shape=mxgraph.pid2inst.sharedCont;";break;case "PEComputerIndicatorBlock":v.style+=
+"shape=mxgraph.pid2inst.compFunc;";break;case "PESharedIndicator2Block":v.style+="shape=mxgraph.pid2inst.indicator;indType=ctrl;";break;case "PEProgrammableIndicatorBlock":v.style+="shape=mxgraph.pid2inst.progLogCont;"}v.style+=c(v.style,h,e,v);"PEIndicator2Block"==b.Class||"PESharedIndicator2Block"==b.Class?(q=new mxCell("",new mxGeometry(0,0,t,.5*t),"part=1;strokeColor=none;fillColor=none;"),q.vertex=!0,v.insert(q),q.value=g(h.TopText),q.style+=l(h.TopText,x),q.style+=c(q.style,h,e,q,x),u=new mxCell("",
+new mxGeometry(0,.5*t,t,.5*t),"part=1;strokeColor=none;fillColor=none;")):(q=new mxCell("",new mxGeometry(0,0,t,.5*r),"part=1;strokeColor=none;fillColor=none;"),q.vertex=!0,v.insert(q),q.value=g(h.TopText),q.style+=l(h.TopText,x),q.style+=c(q.style,h,e,q,x),u=new mxCell("",new mxGeometry(0,.5*r,t,.5*r),"part=1;strokeColor=none;fillColor=none;"));u.vertex=!0;v.insert(u);u.value=g(h.BotText);u.style+=l(h.BotText,x);u.style+=c(u.style,h,e,u,x);switch(h.instrumentLocation){case 0:v.style+="mounting=field;";
+break;case 1:v.style+="mounting=inaccessible;";break;case 2:v.style+="mounting=room;";break;case 3:v.style+="mounting=local;"}break;case "PEGateValveBlock":case "PEGlobeValveBlock":case "PEAngleValveBlock":case "PEAngleGlobeValveBlock":case "PEPoweredValveBlock":var hd=!1;"PEPoweredValveBlock"==b.Class?1!=h.poweredHandOperated&&(hd=!0):1!=h.handOperated&&(hd=!0);if(hd){var h=p(b).Properties,Z=h.BoundingBox,ae=Z.h;Z.h="PEAngleValveBlock"==b.Class||"PEAngleGlobeValveBlock"==b.Class?.7*Z.h:.6*Z.h;v=
+new mxCell("",new mxGeometry(Math.round(.6*Z.x+vb),Math.round(.6*(Z.y+ae-Z.h)+wb),Math.round(.6*Z.w),Math.round(.6*Z.h)),"");v.vertex=!0;Eb(v,b,f)}if("PEPoweredValveBlock"==b.Class)v.style+="shape=mxgraph.pid2valves.valve;verticalLabelPosition=bottom;verticalAlign=top;",v.style+=c(v.style,h,e,v),1==h.poweredHandOperated?(v.style+="valveType=gate;actuator=powered;",q=new mxCell("",new mxGeometry(.325*t,0,.35*t,.35*r),"part=1;strokeColor=none;fillColor=none;spacingTop=2;"),q.vertex=!0,v.insert(q),q.value=
+g(h.PoweredText),q.style+=(x?"":"fontSize=6;"+d(h.PoweredText)+k(h.PoweredText)+w(h.PoweredText)+y(h.PoweredText)+z(h.PoweredText)+B(h.PoweredText)+C(h.PoweredText))+E(h.PoweredText),q.style+=c(q.style,h,e,q,x)):v.style+="valveType=gate;";else{v.style+="verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.pid2valves.valve;";v.value=g(h.Text);switch(b.Class){case "PEGateValveBlock":v.style+="valveType=gate;";break;case "PEGlobeValveBlock":v.style+="valveType=globe;";break;case "PEAngleValveBlock":v.style+=
+"valveType=angle;";break;case "PEAngleGlobeValveBlock":v.style+="valveType=angleGlobe;flipH=1;"}1==h.handOperated&&(v.style+="actuator=man;")}v.style+=c(v.style,h,e,v,x);break;case "UI2BrowserBlock":v.style+="shape=mxgraph.mockup.containers.browserWindow;mainText=;";1==h.vScroll&&(F=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-130),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-110),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),
+F.geometry.relative=!0,F.geometry.offset=new mxPoint(-20,110),F.vertex=!0,v.insert(F),v.style+="spacingRight=20;");1==h.hScroll&&(P=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),P.geometry.relative=!0,P.geometry.offset=new mxPoint(0,-20),P.vertex=!0,v.insert(P));v.style+=c(v.style,h,e,v);break;case "UI2WindowBlock":v.value=
+g(h.Title);v.style+="shape=mxgraph.mockup.containers.window;mainText=;align=center;verticalAlign=top;spacing=5;"+(x?"":a(h.Title)+d(h.Title)+k(h.Title));1==h.vScroll&&(F=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-50),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-30),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(-20,
+30),F.vertex=!0,v.insert(F),v.style+="spacingRight=20;");1==h.hScroll&&(P=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),P.geometry.relative=!0,P.geometry.offset=new mxPoint(0,-20),P.vertex=!0,v.insert(P));v.style+=c(v.style,h,e,v,x);break;case "UI2DialogBlock":v.value=g(h.Text);v.style+=l(h.Text,x);q=
+new mxCell("",new mxGeometry(0,0,t,30),"part=1;resizeHeight=0;");q.vertex=!0;v.insert(q);q.value=g(h.Title);q.style+=l(h.Title,x);q.style+=c(q.style,h,e,q,x);u=new mxCell("",new mxGeometry(1,.5,20,20),"part=1;shape=ellipse;strokeColor=#008cff;resizable=0;fillColor=none;html=1;");u.geometry.relative=!0;u.geometry.offset=new mxPoint(-25,-10);u.vertex=!0;q.insert(u);1==h.vScroll&&(F=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-50),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):
new mxCell("",new mxGeometry(1,0,20,r-30),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(-20,30),F.vertex=!0,v.insert(F),v.style+="spacingRight=20;");1==h.hScroll&&(P=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),
-P.geometry.relative=!0,P.geometry.offset=new mxPoint(0,-20),P.vertex=!0,v.insert(P));v.style+=c(v.style,h,e,v,x);break;case "UI2DialogBlock":v.value=g(h.Text);v.style+=l(h.Text,x);q=new mxCell("",new mxGeometry(0,0,t,30),"part=1;resizeHeight=0;");q.vertex=!0;v.insert(q);q.value=g(h.Title);q.style+=l(h.Title,x);q.style+=c(q.style,h,e,q,x);u=new mxCell("",new mxGeometry(1,.5,20,20),"part=1;shape=ellipse;strokeColor=#008cff;resizable=0;fillColor=none;html=1;");u.geometry.relative=!0;u.geometry.offset=
-new mxPoint(-25,-10);u.vertex=!0;q.insert(u);1==h.vScroll&&(F=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-50),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-30),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(-20,30),F.vertex=!0,v.insert(F),v.style+="spacingRight=20;");1==h.hScroll&&(P=1==h.vScroll?new mxCell("",
-new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),P.geometry.relative=!0,P.geometry.offset=new mxPoint(0,-20),P.vertex=!0,v.insert(P));v.style+=c(v.style,h,e,v);break;case "UI2AccordionBlock":q=[];L=25;for(m=0;m<=h.Panels-1;m++)q[m]=m<h.Selected-1?new mxCell("",new mxGeometry(0,m*L,t,L),"part=1;fillColor=#000000;fillOpacity=25;"):
-m==h.Selected-1?new mxCell("",new mxGeometry(0,m*L,t,L),"part=1;fillColor=none;"):new mxCell("",new mxGeometry(0,r-(h.Panels-h.Selected)*L+(m-h.Selected)*L,t,L),"part=1;fillColor=#000000;fillOpacity=25;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Panel_"+(m+1)]),q[m].style+=l(h["Panel_"+(m+1)],x),0>q[m].style.indexOf(";align=")&&(q[m].style+="align=left;spacingLeft=5;");var ka=D(h,e),ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",
-new mxGeometry(1,0,20,r-h.Selected*L-20-(h.Panels-h.Selected)*L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-h.Selected*L-(h.Panels-h.Selected)*L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,h.Selected*L),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&
-(F=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20-(h.Panels-h.Selected)*L),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));P=1==h.vScroll?new mxCell("",new mxGeometry(0,h.Selected*L,t-20,r-h.Selected*L-20-(h.Panels-h.Selected)*L),
-"part=1;fillColor=none;strokeColor=none;"):new mxCell("",new mxGeometry(0,h.Selected*L,t-20,r-h.Selected*L-(h.Panels-h.Selected)*L),"part=1;fillColor=none;strokeColor=none;");P.vertex=!0;v.insert(P);P.value=g(h.Content_1);P.style+=l(h.Content_1,x);!x&&0>P.style.indexOf(";align=")&&(P.style+="align=left;spacingLeft=5;");v.style+=c(v.style,h,e,v);break;case "UI2TabBarContainerBlock":v.style+="strokeColor=none;fillColor=none;";var q=[],u=[],L=25,Ja=3,W=(t+Ja)/(h.Tabs+1),ta=new mxCell("",new mxGeometry(0,
-L,t,r-L),"part=1;");ta.vertex=!0;v.insert(ta);ta.style+=c(ta.style,h,e,ta);for(m=0;m<=h.Tabs-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(10+m*W,0,W-Ja,L),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(10+m*W,0,W-Ja,L),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W-Ja,L),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=
-l(h["Tab_"+(m+1)],x),0>u[m].style.indexOf(";align=")&&(u[m].style+="align=left;spacingLeft=2;"),u[m].style+=c(u[m].style,h,e,u[m]);ka=D(h,e);ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-20-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),
-u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,L),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20),F.vertex=!0,v.insert(F),F.style+=
-ka,F.style+=c(F.style,h,e,F));break;case "UI2TabBar2ContainerBlock":v.style+="strokeColor=none;fillColor=none;";q=[];u=[];L=25;Ja=3;W=(t+Ja)/h.Tabs;ta=new mxCell("",new mxGeometry(0,L,t,r-L),"part=1;");ta.vertex=!0;v.insert(ta);ta.style+=c(ta.style,h,e,ta);for(m=0;m<=h.Tabs-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(m*W,0,W-Ja,L),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(m*W,0,W-Ja,L),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,
-h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W-Ja,L),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=l(h["Tab_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x),0>u[m].style.indexOf(";align=")&&(u[m].style+="align=left;spacingLeft=2;");ka=D(h,e);ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-20-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):
-new mxCell("",new mxGeometry(1,0,20,r-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,L),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),
-F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));break;case "UI2VTabBarContainerBlock":v.style+="strokeColor=none;fillColor=none;";q=[];u=[];Ja=3;L=25+Ja;W=80;sb=10;ta=new mxCell("",new mxGeometry(W,0,t-W,r),"part=1;");ta.vertex=!0;v.insert(ta);ta.style+=c(ta.style,h,e,ta);for(m=0;m<=h.Tabs-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(0,sb+m*L,W,L-Ja),""),u[m].vertex=!0,v.insert(u[m]),u[m].value=g(h["Tab_"+(m+1)]),
-u[m].style+=l(h["Tab_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x)):(q[m]=new mxCell("",new mxGeometry(0,sb+m*L,W,L-Ja),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W,L-Ja),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=l(h["Tab_"+(m+1)],x)),0>u[m].style.indexOf(";align=")&&(u[m].style+="align=left;spacingLeft=2;"),u[m].style+=c(u[m].style,h,e,u[m]);ka=
-D(h,e);ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,0),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=
-ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(W,1,t-20-W,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(W,1,t-W,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));break;case "UI2CheckBoxBlock":v.style+="strokeColor=none;fillColor=none;";L=r/h.Options;
-q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(0,m*L+.5*L-5,10,10),"labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected[m+1]&&1==h.Selected[m+1]&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2,2,6,6),"shape=mxgraph.mscae.general.checkmark;part=1;"),
-u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2HorizontalCheckBoxBlock":v.style+="strokeColor=none;fillColor=none;";W=t/h.Options;q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(m*W,.5*r-5,10,10),"labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,
-q[m],x),null!=h.Selected[m+1]&&1==h.Selected[m+1]&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2,2,6,6),"shape=mxgraph.mscae.general.checkmark;part=1;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2RadioBlock":v.style+="strokeColor=none;fillColor=none;";L=r/h.Options;q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(0,m*L+.5*L-5,10,10),"shape=ellipse;labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),
-q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected&&h.Selected==m+1&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2.5,2.5,5,5),"shape=ellipse;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2HorizontalRadioBlock":v.style+="strokeColor=none;fillColor=none;";W=t/h.Options;q=[];u=
-[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(m*W,.5*r-5,10,10),"shape=ellipse;labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected&&h.Selected==m+1&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2,2,6,6),"shape=ellipse;part=1;"),
-u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2HSliderBlock":case "UI2VSliderBlock":v.style+="shape=mxgraph.mockup.forms.horSlider;sliderStyle=basic;handleStyle=handle;";"UI2VSliderBlock"==b.Class&&(v.style+="direction=south;");v.style+="sliderPos="+100*h.ScrollVal+";";v.style+=c(v.style,h,e,v);break;case "UI2DatePickerBlock":v.style+="strokeColor=none;fillColor=none;";q=new mxCell("",new mxGeometry(0,0,.6*t,r),"part=1;");q.vertex=!0;v.insert(q);
-q.value=g(h.Date);q.style+=l(h.Date,x);v.style+=c(v.style,h,e,v);I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");u=new mxCell("",new mxGeometry(.75*t,0,.25*t,r),"part=1;shape=mxgraph.gmdl.calendar;");u.vertex=!0;v.insert(u);u.style+=I;u.style+=c(u.style,h,e,u);break;case "UI2SearchBlock":v.style+="shape=mxgraph.mockup.forms.searchBox;mainText=;flipH=1;align=left;spacingLeft=26;"+a(h.Search)+d(h.Search)+k(h.Search);v.value=g(h.Search);v.style+=c(v.style,h,e,v,x);break;
-case "UI2NumericStepperBlock":I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");v.style+="shape=mxgraph.mockup.forms.spinner;spinLayout=right;spinStyle=normal;adjStyle=triangle;mainText=;align=left;spacingLeft=8;"+I+a(h.Number)+d(h.Number)+k(h.Number);v.value=g(h.Number);v.style+=c(v.style,h,e,v,x);break;case "UI2ButtonBarBlock":v.style+=c(v.style,h,e,v);q=[];u=[];W=t/h.Buttons;for(m=0;m<=h.Buttons-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(m*W,0,W,r),""),
-u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(m*W,0,W,r),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W,r),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Button_"+(m+1)]),u[m].style+=l(h["Button_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x);break;case "UI2VerticalButtonBarBlock":v.style+=c(v.style,h,e,v);q=[];u=[];L=r/h.Buttons;for(m=0;m<=h.Buttons-
-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(0,m*L,t,L),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(0,m*L,t,L),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,t,L),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Button_"+(m+1)]),u[m].style+=l(h["Button_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x);break;case "UI2LinkBarBlock":v.style+="strokeColor=none;fillColor=none;";
-v.style+=c(v.style,h,e,v);q=[];u=[];W=t/h.Links;for(m=0;m<h.Links;m++)0!=m?(u[m]=new mxCell("",new mxGeometry(m*W,0,W,r),"shape=partialRectangle;top=0;bottom=0;right=0;fillColor=none;"),u[m].style+=c(u[m].style,h,e,u[m])):u[m]=new mxCell("",new mxGeometry(m*W,0,W,r),"fillColor=none;strokeColor=none;"),u[m].vertex=!0,v.insert(u[m]),u[m].value=g(h["Link_"+(m+1)]),u[m].style+=l(h["Link_"+(m+1)],x);break;case "UI2BreadCrumbsBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);
-q=[];u=[];W=t/h.Links;for(m=0;m<h.Links;m++)q[m]=new mxCell("",new mxGeometry(m*W,0,W,r),"fillColor=none;strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Link_"+(m+1)]),q[m].style+=l(h["Link_"+(m+1)],x);for(m=1;m<h.Links;m++)u[m]=new mxCell("",new mxGeometry(m/h.Links,.5,6,10),"shape=mxgraph.ios7.misc.right;"),u[m].geometry.relative=!0,u[m].geometry.offset=new mxPoint(-3,-5),u[m].vertex=!0,v.insert(u[m]);break;case "UI2MenuBarBlock":v.style+="strokeColor=none;";v.style+=c(v.style,
-h,e,v);q=[];W=t/(h.Buttons+1);for(m=0;m<=h.Buttons-1;m++)q[m]=m!=h.Selected-1?new mxCell("",new mxGeometry(0,0,W,r),"strokeColor=none;fillColor=none;resizeHeight=1;"):new mxCell("",new mxGeometry(0,0,W,r),"fillColor=#000000;fillOpacity=25;strokeColor=none;resizeHeight=1;"),q[m].geometry.relative=!0,q[m].geometry.offset=new mxPoint(m*W,0),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["MenuItem_"+(m+1)]),q[m].style+=l(h["MenuItem_"+(m+1)],x);break;case "UI2AtoZBlock":v.style+="fillColor=none;strokeColor=none;"+
-l(h.Text_0);v.value="0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";break;case "UI2PaginationBlock":v.style+="fillColor=none;strokeColor=none;"+l(h.Text_prev);v.value=g(h.Text_prev)+" ";for(m=0;m<h.Links;m++)v.value+=g(h["Link_"+(m+1)])+" ";v.value+=g(h.Text_next);break;case "UI2ContextMenuBlock":v.style+=c(v.style,h,e,v);for(var H=[],pb=[],ac=[],L=r/h.Lines,N=null,m=0;m<h.Lines;m++)null!=h["Item_"+(m+1)]&&(null==N&&(N=""+a(h["Item_"+(m+1)])+d(h["Item_"+(m+1)])+k(h["Item_"+(m+1)])),H[m]=
-new mxCell("",new mxGeometry(0,m*r/h.Lines,t,L),"strokeColor=none;fillColor=none;spacingLeft=20;align=left;html=1;"),H[m].vertex=!0,v.insert(H[m]),H[m].style+=N,H[m].value=g(h["Item_"+(m+1)])),null!=h.Icons[m+1]&&null!=H[m]&&("dot"==h.Icons[m+1]?(pb[m]=new mxCell("",new mxGeometry(0,.5,8,8),"shape=ellipse;strokeColor=none;"),pb[m].geometry.offset=new mxPoint(6,-4)):"check"==h.Icons[m+1]&&(pb[m]=new mxCell("",new mxGeometry(0,.5,7,8),"shape=mxgraph.mscae.general.checkmark;strokeColor=none;"),pb[m].geometry.offset=
-new mxPoint(6.5,-4)),null!=pb[m]&&(pb[m].geometry.relative=!0,pb[m].vertex=!0,H[m].insert(pb[m]),I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),pb[m].style+=I)),null!=h["Shortcut_"+(m+1)]&&(null==N&&(N=""+a(h["Shortcut_"+(m+1)])+d(h["Shortcut_"+(m+1)])+k(h["Shortcut_"+(m+1)])),ac[m]=new mxCell("",new mxGeometry(.6*t,m*r/h.Lines,.4*t,L),"strokeColor=none;fillColor=none;spacingRight=3;align=right;html=1;"),ac[m].vertex=!0,v.insert(ac[m]),ac[m].style+=N,ac[m].value=g(h["Shortcut_"+
-(m+1)])),null!=h.Dividers[m+1]&&(H[m]=new mxCell("",new mxGeometry(.05*t,m*r/h.Lines,.9*t,L),"shape=line;strokeWidth=1;"),H[m].vertex=!0,v.insert(H[m]),H[m].style+=D(h,e));break;case "UI2ProgressBarBlock":v.style+="shape=mxgraph.mockup.misc.progressBar;fillColor2=#888888;barPos="+100*h.ScrollVal+";";break;case "UI2TooltipSquareBlock":v.value=g(h.Tip);v.style+="html=1;shape=callout;flipV=1;base=13;size=7;position=0.5;position2=0.66;rounded=1;arcSize="+h.RoundCorners+";"+l(h.Tip,x);v.style+=c(v.style,
-h,e,v,x);break;case "UI2CalloutBlock":v.value=g(h.Txt);v.style+="shape=ellipse;"+l(h.Txt,x);v.style+=c(v.style,h,e,v,x);break;case "UI2AlertBlock":v.value=g(h.Txt);v.style+=l(h.Txt,x);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,t,30),"part=1;resizeHeight=0;");q.vertex=!0;v.insert(q);q.value=g(h.Title);q.style+=l(h.Title,x);q.style+=c(q.style,h,e,q,x);u=new mxCell("",new mxGeometry(1,.5,20,20),"part=1;shape=ellipse;strokeColor=#008cff;resizable=0;fillColor=none;html=1;");u.geometry.relative=
-!0;u.geometry.offset=new mxPoint(-25,-10);u.vertex=!0;q.insert(u);for(var be=45*h.Buttons+(10*h.Buttons-1),F=[],m=0;m<h.Buttons;m++)F[m]=new mxCell("",new mxGeometry(.5,1,45,20),"part=1;html=1;"),F[m].geometry.relative=!0,F[m].geometry.offset=new mxPoint(.5*-be+55*m,-40),F[m].vertex=!0,v.insert(F[m]),F[m].value=g(h["Button_"+(m+1)]),F[m].style+=l(h["Button_"+(m+1)],x),F[m].style+=c(F[m].style,h,e,F[m],x);break;case "UMLClassBlock":if(0==h.Simple){var N=O(h,e),Ba=Math.round(.6*h.TitleHeight)||25,N=
-N.replace("fillColor","swimlaneFillColor");""==N&&(N="swimlaneFillColor=#ffffff;");v.value=g(h.Title);v.style+="swimlane;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;"+N+"startSize="+Ba+";"+l(h.Title,x);v.style+=c(v.style,h,e,v,x);for(var H=[],hd=[],Da=Ba/r,Nb=Ba,m=0;m<=h.Attributes;m++){0<m&&(hd[m]=new mxCell("",new mxGeometry(0,Nb,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),
-Nb+=8,hd[m].vertex=!0,v.insert(hd[m]));L=0;0==h.Attributes?L=m=1:m<h.Attributes?(L=h["Text"+(m+1)+"Percent"],Da+=L):L=1-Da;var Dc=Math.round((r-Ba)*L)+(h.ExtraHeightSet&&1==m?.6*h.ExtraHeight:0);H[m]=new mxCell("",new mxGeometry(0,Nb,t,Dc),"part=1;html=1;resizeHeight=0;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");Nb+=Dc;H[m].vertex=!0;v.insert(H[m]);H[m].style+=N+M(h,e,H[m])+
+P.geometry.relative=!0,P.geometry.offset=new mxPoint(0,-20),P.vertex=!0,v.insert(P));v.style+=c(v.style,h,e,v);break;case "UI2AccordionBlock":q=[];L=25;for(m=0;m<=h.Panels-1;m++)q[m]=m<h.Selected-1?new mxCell("",new mxGeometry(0,m*L,t,L),"part=1;fillColor=#000000;fillOpacity=25;"):m==h.Selected-1?new mxCell("",new mxGeometry(0,m*L,t,L),"part=1;fillColor=none;"):new mxCell("",new mxGeometry(0,r-(h.Panels-h.Selected)*L+(m-h.Selected)*L,t,L),"part=1;fillColor=#000000;fillOpacity=25;"),q[m].vertex=!0,
+v.insert(q[m]),q[m].value=g(h["Panel_"+(m+1)]),q[m].style+=l(h["Panel_"+(m+1)],x),0>q[m].style.indexOf(";align=")&&(q[m].style+="align=left;spacingLeft=5;");var ka=D(h,e),ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-h.Selected*L-20-(h.Panels-h.Selected)*L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-h.Selected*L-
+(h.Panels-h.Selected)*L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,h.Selected*L),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),
+F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20-(h.Panels-h.Selected)*L),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));P=1==h.vScroll?new mxCell("",new mxGeometry(0,h.Selected*L,t-20,r-h.Selected*L-20-(h.Panels-h.Selected)*L),"part=1;fillColor=none;strokeColor=none;"):new mxCell("",new mxGeometry(0,h.Selected*L,t-20,r-h.Selected*L-(h.Panels-h.Selected)*L),"part=1;fillColor=none;strokeColor=none;");P.vertex=!0;v.insert(P);P.value=g(h.Content_1);P.style+=l(h.Content_1,x);
+!x&&0>P.style.indexOf(";align=")&&(P.style+="align=left;spacingLeft=5;");v.style+=c(v.style,h,e,v);break;case "UI2TabBarContainerBlock":v.style+="strokeColor=none;fillColor=none;";var q=[],u=[],L=25,Ja=3,W=(t+Ja)/(h.Tabs+1),ta=new mxCell("",new mxGeometry(0,L,t,r-L),"part=1;");ta.vertex=!0;v.insert(ta);ta.style+=c(ta.style,h,e,ta);for(m=0;m<=h.Tabs-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(10+m*W,0,W-Ja,L),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(10+m*W,
+0,W-Ja,L),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W-Ja,L),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=l(h["Tab_"+(m+1)],x),0>u[m].style.indexOf(";align=")&&(u[m].style+="align=left;spacingLeft=2;"),u[m].style+=c(u[m].style,h,e,u[m]);ka=D(h,e);ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=
+1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-20-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,L),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-
+20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));break;case "UI2TabBar2ContainerBlock":v.style+="strokeColor=none;fillColor=none;";q=[];u=[];L=25;Ja=3;W=(t+Ja)/h.Tabs;ta=new mxCell("",new mxGeometry(0,L,t,r-L),"part=1;");ta.vertex=
+!0;v.insert(ta);ta.style+=c(ta.style,h,e,ta);for(m=0;m<=h.Tabs-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(m*W,0,W-Ja,L),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(m*W,0,W-Ja,L),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W-Ja,L),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=l(h["Tab_"+(m+1)],x),u[m].style+=c(u[m].style,
+h,e,u[m],x),0>u[m].style.indexOf(";align=")&&(u[m].style+="align=left;spacingLeft=2;");ka=D(h,e);ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",new mxGeometry(1,0,20,r-20-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r-L),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=
+new mxPoint(-20,L),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(0,1,t-20,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):new mxCell("",new mxGeometry(0,1,t,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));break;
+case "UI2VTabBarContainerBlock":v.style+="strokeColor=none;fillColor=none;";q=[];u=[];Ja=3;L=25+Ja;W=80;rb=10;ta=new mxCell("",new mxGeometry(W,0,t-W,r),"part=1;");ta.vertex=!0;v.insert(ta);ta.style+=c(ta.style,h,e,ta);for(m=0;m<=h.Tabs-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(0,rb+m*L,W,L-Ja),""),u[m].vertex=!0,v.insert(u[m]),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=l(h["Tab_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x)):(q[m]=new mxCell("",new mxGeometry(0,rb+m*L,W,L-Ja),"strokeColor=none;"),
+q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W,L-Ja),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].value=g(h["Tab_"+(m+1)]),u[m].style+=l(h["Tab_"+(m+1)],x)),0>u[m].style.indexOf(";align=")&&(u[m].style+="align=left;spacingLeft=2;"),u[m].style+=c(u[m].style,h,e,u[m]);ka=D(h,e);ka=ka.replace("strokeColor","fillColor2");""==ka&&(ka="fillColor2=#000000;");1==h.vScroll&&(u=1==h.hScroll?new mxCell("",new mxGeometry(1,
+0,20,r-20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"):new mxCell("",new mxGeometry(1,0,20,r),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=95;direction=north;resizeHeight=1;"),u.geometry.relative=!0,u.geometry.offset=new mxPoint(-20,0),u.vertex=!0,v.insert(u),v.style+="spacingRight=20;",u.style+=ka,u.style+=c(u.style,h,e,u));1==h.hScroll&&(F=1==h.vScroll?new mxCell("",new mxGeometry(W,1,t-20-W,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"):
+new mxCell("",new mxGeometry(W,1,t-W,20),"part=1;shape=mxgraph.mockup.navigation.scrollBar;barPos=5;resizeWidth=1;"),F.geometry.relative=!0,F.geometry.offset=new mxPoint(0,-20),F.vertex=!0,v.insert(F),F.style+=ka,F.style+=c(F.style,h,e,F));break;case "UI2CheckBoxBlock":v.style+="strokeColor=none;fillColor=none;";L=r/h.Options;q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(0,m*L+.5*L-5,10,10),"labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),
+q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected[m+1]&&1==h.Selected[m+1]&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2,2,6,6),"shape=mxgraph.mscae.general.checkmark;part=1;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2HorizontalCheckBoxBlock":v.style+="strokeColor=none;fillColor=none;";
+W=t/h.Options;q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(m*W,.5*r-5,10,10),"labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected[m+1]&&1==h.Selected[m+1]&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2,
+2,6,6),"shape=mxgraph.mscae.general.checkmark;part=1;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2RadioBlock":v.style+="strokeColor=none;fillColor=none;";L=r/h.Options;q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(0,m*L+.5*L-5,10,10),"shape=ellipse;labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=
+l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected&&h.Selected==m+1&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2.5,2.5,5,5),"shape=ellipse;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=c(u[m].style,h,e,u[m]));break;case "UI2HorizontalRadioBlock":v.style+="strokeColor=none;fillColor=none;";W=t/h.Options;q=[];u=[];for(m=0;m<h.Options;m++)q[m]=new mxCell("",new mxGeometry(m*W,.5*r-5,10,
+10),"shape=ellipse;labelPosition=right;part=1;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=3;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Option_"+(m+1)]),q[m].style+=l(h["Option_"+(m+1)],x),q[m].style+=c(q[m].style,h,e,q[m],x),null!=h.Selected&&h.Selected==m+1&&(I=D(h,e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),u[m]=new mxCell("",new mxGeometry(2,2,6,6),"shape=ellipse;part=1;"),u[m].vertex=!0,q[m].insert(u[m]),u[m].style+=I,u[m].style+=
+c(u[m].style,h,e,u[m]));break;case "UI2HSliderBlock":case "UI2VSliderBlock":v.style+="shape=mxgraph.mockup.forms.horSlider;sliderStyle=basic;handleStyle=handle;";"UI2VSliderBlock"==b.Class&&(v.style+="direction=south;");v.style+="sliderPos="+100*h.ScrollVal+";";v.style+=c(v.style,h,e,v);break;case "UI2DatePickerBlock":v.style+="strokeColor=none;fillColor=none;";q=new mxCell("",new mxGeometry(0,0,.6*t,r),"part=1;");q.vertex=!0;v.insert(q);q.value=g(h.Date);q.style+=l(h.Date,x);v.style+=c(v.style,h,
+e,v);I=D(h,e);I=I.replace("strokeColor","fillColor");""==I&&(I="fillColor=#000000;");u=new mxCell("",new mxGeometry(.75*t,0,.25*t,r),"part=1;shape=mxgraph.gmdl.calendar;");u.vertex=!0;v.insert(u);u.style+=I;u.style+=c(u.style,h,e,u);break;case "UI2SearchBlock":v.style+="shape=mxgraph.mockup.forms.searchBox;mainText=;flipH=1;align=left;spacingLeft=26;"+a(h.Search)+d(h.Search)+k(h.Search);v.value=g(h.Search);v.style+=c(v.style,h,e,v,x);break;case "UI2NumericStepperBlock":I=D(h,e);I=I.replace("strokeColor",
+"fillColor");""==I&&(I="fillColor=#000000;");v.style+="shape=mxgraph.mockup.forms.spinner;spinLayout=right;spinStyle=normal;adjStyle=triangle;mainText=;align=left;spacingLeft=8;"+I+a(h.Number)+d(h.Number)+k(h.Number);v.value=g(h.Number);v.style+=c(v.style,h,e,v,x);break;case "UI2ButtonBarBlock":v.style+=c(v.style,h,e,v);q=[];u=[];W=t/h.Buttons;for(m=0;m<=h.Buttons-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(m*W,0,W,r),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(m*
+W,0,W,r),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,W,r),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Button_"+(m+1)]),u[m].style+=l(h["Button_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x);break;case "UI2VerticalButtonBarBlock":v.style+=c(v.style,h,e,v);q=[];u=[];L=r/h.Buttons;for(m=0;m<=h.Buttons-1;m++)m==h.Selected-1?(u[m]=new mxCell("",new mxGeometry(0,m*L,t,
+L),""),u[m].vertex=!0,v.insert(u[m])):(q[m]=new mxCell("",new mxGeometry(0,m*L,t,L),"strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].style+=c(q[m].style,h,e,q[m]),u[m]=new mxCell("",new mxGeometry(0,0,t,L),"fillColor=#000000;fillOpacity=25;"),u[m].vertex=!0,q[m].insert(u[m])),u[m].value=g(h["Button_"+(m+1)]),u[m].style+=l(h["Button_"+(m+1)],x),u[m].style+=c(u[m].style,h,e,u[m],x);break;case "UI2LinkBarBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);q=[];u=[];W=
+t/h.Links;for(m=0;m<h.Links;m++)0!=m?(u[m]=new mxCell("",new mxGeometry(m*W,0,W,r),"shape=partialRectangle;top=0;bottom=0;right=0;fillColor=none;"),u[m].style+=c(u[m].style,h,e,u[m])):u[m]=new mxCell("",new mxGeometry(m*W,0,W,r),"fillColor=none;strokeColor=none;"),u[m].vertex=!0,v.insert(u[m]),u[m].value=g(h["Link_"+(m+1)]),u[m].style+=l(h["Link_"+(m+1)],x);break;case "UI2BreadCrumbsBlock":v.style+="strokeColor=none;fillColor=none;";v.style+=c(v.style,h,e,v);q=[];u=[];W=t/h.Links;for(m=0;m<h.Links;m++)q[m]=
+new mxCell("",new mxGeometry(m*W,0,W,r),"fillColor=none;strokeColor=none;"),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["Link_"+(m+1)]),q[m].style+=l(h["Link_"+(m+1)],x);for(m=1;m<h.Links;m++)u[m]=new mxCell("",new mxGeometry(m/h.Links,.5,6,10),"shape=mxgraph.ios7.misc.right;"),u[m].geometry.relative=!0,u[m].geometry.offset=new mxPoint(-3,-5),u[m].vertex=!0,v.insert(u[m]);break;case "UI2MenuBarBlock":v.style+="strokeColor=none;";v.style+=c(v.style,h,e,v);q=[];W=t/(h.Buttons+1);for(m=0;m<=h.Buttons-
+1;m++)q[m]=m!=h.Selected-1?new mxCell("",new mxGeometry(0,0,W,r),"strokeColor=none;fillColor=none;resizeHeight=1;"):new mxCell("",new mxGeometry(0,0,W,r),"fillColor=#000000;fillOpacity=25;strokeColor=none;resizeHeight=1;"),q[m].geometry.relative=!0,q[m].geometry.offset=new mxPoint(m*W,0),q[m].vertex=!0,v.insert(q[m]),q[m].value=g(h["MenuItem_"+(m+1)]),q[m].style+=l(h["MenuItem_"+(m+1)],x);break;case "UI2AtoZBlock":v.style+="fillColor=none;strokeColor=none;"+l(h.Text_0);v.value="0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
+break;case "UI2PaginationBlock":v.style+="fillColor=none;strokeColor=none;"+l(h.Text_prev);v.value=g(h.Text_prev)+" ";for(m=0;m<h.Links;m++)v.value+=g(h["Link_"+(m+1)])+" ";v.value+=g(h.Text_next);break;case "UI2ContextMenuBlock":v.style+=c(v.style,h,e,v);for(var H=[],pb=[],ac=[],L=r/h.Lines,N=null,m=0;m<h.Lines;m++)null!=h["Item_"+(m+1)]&&(null==N&&(N=""+a(h["Item_"+(m+1)])+d(h["Item_"+(m+1)])+k(h["Item_"+(m+1)])),H[m]=new mxCell("",new mxGeometry(0,m*r/h.Lines,t,L),"strokeColor=none;fillColor=none;spacingLeft=20;align=left;html=1;"),
+H[m].vertex=!0,v.insert(H[m]),H[m].style+=N,H[m].value=g(h["Item_"+(m+1)])),null!=h.Icons[m+1]&&null!=H[m]&&("dot"==h.Icons[m+1]?(pb[m]=new mxCell("",new mxGeometry(0,.5,8,8),"shape=ellipse;strokeColor=none;"),pb[m].geometry.offset=new mxPoint(6,-4)):"check"==h.Icons[m+1]&&(pb[m]=new mxCell("",new mxGeometry(0,.5,7,8),"shape=mxgraph.mscae.general.checkmark;strokeColor=none;"),pb[m].geometry.offset=new mxPoint(6.5,-4)),null!=pb[m]&&(pb[m].geometry.relative=!0,pb[m].vertex=!0,H[m].insert(pb[m]),I=D(h,
+e),I=I.replace("strokeColor","fillColor"),""==I&&(I="fillColor=#000000;"),pb[m].style+=I)),null!=h["Shortcut_"+(m+1)]&&(null==N&&(N=""+a(h["Shortcut_"+(m+1)])+d(h["Shortcut_"+(m+1)])+k(h["Shortcut_"+(m+1)])),ac[m]=new mxCell("",new mxGeometry(.6*t,m*r/h.Lines,.4*t,L),"strokeColor=none;fillColor=none;spacingRight=3;align=right;html=1;"),ac[m].vertex=!0,v.insert(ac[m]),ac[m].style+=N,ac[m].value=g(h["Shortcut_"+(m+1)])),null!=h.Dividers[m+1]&&(H[m]=new mxCell("",new mxGeometry(.05*t,m*r/h.Lines,.9*
+t,L),"shape=line;strokeWidth=1;"),H[m].vertex=!0,v.insert(H[m]),H[m].style+=D(h,e));break;case "UI2ProgressBarBlock":v.style+="shape=mxgraph.mockup.misc.progressBar;fillColor2=#888888;barPos="+100*h.ScrollVal+";";break;case "UI2TooltipSquareBlock":v.value=g(h.Tip);v.style+="html=1;shape=callout;flipV=1;base=13;size=7;position=0.5;position2=0.66;rounded=1;arcSize="+h.RoundCorners+";"+l(h.Tip,x);v.style+=c(v.style,h,e,v,x);break;case "UI2CalloutBlock":v.value=g(h.Txt);v.style+="shape=ellipse;"+l(h.Txt,
+x);v.style+=c(v.style,h,e,v,x);break;case "UI2AlertBlock":v.value=g(h.Txt);v.style+=l(h.Txt,x);v.style+=c(v.style,h,e,v,x);q=new mxCell("",new mxGeometry(0,0,t,30),"part=1;resizeHeight=0;");q.vertex=!0;v.insert(q);q.value=g(h.Title);q.style+=l(h.Title,x);q.style+=c(q.style,h,e,q,x);u=new mxCell("",new mxGeometry(1,.5,20,20),"part=1;shape=ellipse;strokeColor=#008cff;resizable=0;fillColor=none;html=1;");u.geometry.relative=!0;u.geometry.offset=new mxPoint(-25,-10);u.vertex=!0;q.insert(u);for(var be=
+45*h.Buttons+(10*h.Buttons-1),F=[],m=0;m<h.Buttons;m++)F[m]=new mxCell("",new mxGeometry(.5,1,45,20),"part=1;html=1;"),F[m].geometry.relative=!0,F[m].geometry.offset=new mxPoint(.5*-be+55*m,-40),F[m].vertex=!0,v.insert(F[m]),F[m].value=g(h["Button_"+(m+1)]),F[m].style+=l(h["Button_"+(m+1)],x),F[m].style+=c(F[m].style,h,e,F[m],x);break;case "UMLClassBlock":if(0==h.Simple){var N=O(h,e),Ba=Math.round(.6*h.TitleHeight)||25,N=N.replace("fillColor","swimlaneFillColor");""==N&&(N="swimlaneFillColor=#ffffff;");
+v.value=g(h.Title);v.style+="swimlane;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;"+N+"startSize="+Ba+";"+l(h.Title,x);v.style+=c(v.style,h,e,v,x);for(var H=[],id=[],Da=Ba/r,Nb=Ba,m=0;m<=h.Attributes;m++){0<m&&(id[m]=new mxCell("",new mxGeometry(0,Nb,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),
+Nb+=8,id[m].vertex=!0,v.insert(id[m]));L=0;0==h.Attributes?L=m=1:m<h.Attributes?(L=h["Text"+(m+1)+"Percent"],Da+=L):L=1-Da;var Dc=Math.round((r-Ba)*L)+(h.ExtraHeightSet&&1==m?.6*h.ExtraHeight:0);H[m]=new mxCell("",new mxGeometry(0,Nb,t,Dc),"part=1;html=1;resizeHeight=0;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");Nb+=Dc;H[m].vertex=!0;v.insert(H[m]);H[m].style+=N+M(h,e,H[m])+
a(h["Text"+(m+1)])+d(h["Text"+(m+1)])+k(h["Text"+(m+1)]);H[m].value=g(h["Text"+(m+1)])}}else v.value=g(h.Title),v.style+=l(h.Title,x),v.style+=c(v.style,h,e,v,x);break;case "ERDEntityBlock":N=O(h,e);Ba=.6*h.Name_h;N=N.replace("fillColor","swimlaneFillColor");""==N&&(N="swimlaneFillColor=#ffffff;");v.value=g(h.Name);v.style+="swimlane;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"+N+"startSize="+Ba+";"+l(h.Name,x);
v.style+=c(v.style,h,e,v,x);v.style=h.ShadedHeader?v.style+"fillColor=#e0e0e0;":v.style+O(h,e);H=[];Da=Ba/r;Nb=Ba;for(m=0;m<h.Fields;m++)L=0,Dc=.6*h["Field"+(m+1)+"_h"],H[m]=new mxCell("",new mxGeometry(0,Nb,t,Dc),"part=1;resizeHeight=0;strokeColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;html=1;"),Nb+=Dc,H[m].vertex=!0,v.insert(H[m]),H[m].style+=N+a(h["Field"+(m+1)])+d(h["Field"+(m+1)])+k(h["Field"+
(m+1)]),H[m].style=1==h.AltRows&&0!=m%2?H[m].style+"fillColor=#000000;opacity=5;":H[m].style+("fillColor=none;"+M(h,e,H[m])),H[m].value=g(h["Field"+(m+1)]);break;case "ERDEntityBlock2":N=O(h,e);Ba=.6*h.Name_h;N=N.replace("fillColor","swimlaneFillColor");""==N&&(N="swimlaneFillColor=#ffffff;");v.value=g(h.Name);v.style+="swimlane;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"+N+"startSize="+Ba+";"+l(h.Name,x);v.style=h.ShadedHeader?v.style+"fillColor=#e0e0e0;":v.style+
@@ -252,9 +253,9 @@ O(h,e);v.style+=c(v.style,h,e,v,x);var H=[],aa=[],Da=Ba,Ka=30;null!=h.Column1&&(
v.style+"fillColor=#e0e0e0;":v.style+O(h,e);v.value=g(h.Name);v.style+=c(v.style,h,e,v,x);H=[];aa=[];Da=Ba;Ka=30;null!=h.Column1&&(Ka=.6*h.Column1);for(m=0;m<h.Fields;m++)L=0,aa[m]=new mxCell("",new mxGeometry(0,Da,Ka,.6*h["Field"+(m+1)+"_h"]),"strokeColor=none;part=1;resizeHeight=0;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),aa[m].vertex=!0,v.insert(aa[m]),aa[m].style+=N+a(h["Field"+(m+1)])+d(h["Field"+
(m+1)])+k(h["Field"+(m+1)]),aa[m].style=1==h.AltRows&&0!=m%2?aa[m].style+"fillColor=#000000;fillOpacity=5;":aa[m].style+("fillColor=none;"+M(h,e,aa[m])),aa[m].value=g(h["Field"+(m+1)]),aa[m].style+=c(aa[m].style,h,e,aa[m],x),H[m]=new mxCell("",new mxGeometry(Ka,Da,t-Ka,.6*h["Type"+(m+1)+"_h"]),"shape=partialRectangle;top=0;right=0;bottom=0;part=1;resizeHeight=0;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
H[m].vertex=!0,v.insert(H[m]),H[m].style+=N+a(h["Type"+(m+1)])+d(h["Type"+(m+1)])+k(h["Type"+(m+1)]),H[m].style=1==h.AltRows&&0!=m%2?H[m].style+"fillColor=#000000;fillOpacity=5;":H[m].style+("fillColor=none;"+M(h,e,H[m])),H[m].value=g(h["Type"+(m+1)]),H[m].style+=c(H[m].style,h,e,H[m],x),Da+=.6*h["Field"+(m+1)+"_h"];break;case "ERDEntityBlock4":N=O(h,e);Ba=.6*h.Name_h;N=N.replace("fillColor","swimlaneFillColor");""==N&&(N="swimlaneFillColor=#ffffff;");v.style+="swimlane;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"+
-N+"startSize="+Ba+";"+l(h.Name);v.style=h.ShadedHeader?v.style+"fillColor=#e0e0e0;":v.style+O(h,e);v.value=g(h.Name);v.style+=c(v.style,h,e,v,x);var H=[],aa=[],La=[],Da=Ba,Ka=30,Pc=40;null!=h.Column1&&(Ka=.6*h.Column1);null!=h.Column2&&(Pc=.6*h.Column2);for(m=0;m<h.Fields;m++)L=0,aa[m]=new mxCell("",new mxGeometry(0,Da,Ka,.6*h["Key"+(m+1)+"_h"]),"strokeColor=none;part=1;resizeHeight=0;align=center;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
-aa[m].vertex=!0,v.insert(aa[m]),aa[m].style+=N+a(h["Key"+(m+1)])+d(h["Key"+(m+1)])+k(h["Key"+(m+1)]),aa[m].style=1==h.AltRows&&0!=m%2?aa[m].style+"fillColor=#000000;fillOpacity=5;":aa[m].style+("fillColor=none;"+M(h,e,aa[m])),aa[m].value=g(h["Key"+(m+1)]),aa[m].style+=c(aa[m].style,h,e,aa[m],x),H[m]=new mxCell("",new mxGeometry(Ka,Da,t-Ka-Pc,.6*h["Field"+(m+1)+"_h"]),"shape=partialRectangle;top=0;right=0;bottom=0;part=1;resizeHeight=0;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
-H[m].vertex=!0,v.insert(H[m]),H[m].style+=N+a(h["Field"+(m+1)])+d(h["Field"+(m+1)])+k(h["Field"+(m+1)]),H[m].style=1==h.AltRows&&0!=m%2?H[m].style+"fillColor=#000000;fillOpacity=5;":H[m].style+("fillColor=none;"+M(h,e,H[m])),H[m].value=g(h["Field"+(m+1)]),H[m].style+=c(H[m].style,h,e,H[m],x),La[m]=new mxCell("",new mxGeometry(t-Pc,Da,Pc,.6*h["Type"+(m+1)+"_h"]),"shape=partialRectangle;top=0;right=0;bottom=0;part=1;resizeHeight=0;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
+N+"startSize="+Ba+";"+l(h.Name);v.style=h.ShadedHeader?v.style+"fillColor=#e0e0e0;":v.style+O(h,e);v.value=g(h.Name);v.style+=c(v.style,h,e,v,x);var H=[],aa=[],La=[],Da=Ba,Ka=30,Qc=40;null!=h.Column1&&(Ka=.6*h.Column1);null!=h.Column2&&(Qc=.6*h.Column2);for(m=0;m<h.Fields;m++)L=0,aa[m]=new mxCell("",new mxGeometry(0,Da,Ka,.6*h["Key"+(m+1)+"_h"]),"strokeColor=none;part=1;resizeHeight=0;align=center;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
+aa[m].vertex=!0,v.insert(aa[m]),aa[m].style+=N+a(h["Key"+(m+1)])+d(h["Key"+(m+1)])+k(h["Key"+(m+1)]),aa[m].style=1==h.AltRows&&0!=m%2?aa[m].style+"fillColor=#000000;fillOpacity=5;":aa[m].style+("fillColor=none;"+M(h,e,aa[m])),aa[m].value=g(h["Key"+(m+1)]),aa[m].style+=c(aa[m].style,h,e,aa[m],x),H[m]=new mxCell("",new mxGeometry(Ka,Da,t-Ka-Qc,.6*h["Field"+(m+1)+"_h"]),"shape=partialRectangle;top=0;right=0;bottom=0;part=1;resizeHeight=0;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
+H[m].vertex=!0,v.insert(H[m]),H[m].style+=N+a(h["Field"+(m+1)])+d(h["Field"+(m+1)])+k(h["Field"+(m+1)]),H[m].style=1==h.AltRows&&0!=m%2?H[m].style+"fillColor=#000000;fillOpacity=5;":H[m].style+("fillColor=none;"+M(h,e,H[m])),H[m].value=g(h["Field"+(m+1)]),H[m].style+=c(H[m].style,h,e,H[m],x),La[m]=new mxCell("",new mxGeometry(t-Qc,Da,Qc,.6*h["Type"+(m+1)+"_h"]),"shape=partialRectangle;top=0;right=0;bottom=0;part=1;resizeHeight=0;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
La[m].vertex=!0,v.insert(La[m]),La[m].style+=N+a(h["Type"+(m+1)])+d(h["Type"+(m+1)])+k(h["Type"+(m+1)]),La[m].style=1==h.AltRows&&0!=m%2?La[m].style+"fillColor=#000000;fillOpacity=5;":La[m].style+("fillColor=none;"+M(h,e,La[m])),La[m].value=g(h["Type"+(m+1)]),La[m].style+=c(La[m].style,h,e,La[m],x),Da+=.6*h["Key"+(m+1)+"_h"];break;case "GCPServiceCardApplicationSystemBlock":ha("application_system",t,r,v,h,e);break;case "GCPServiceCardAuthorizationBlock":ha("internal_payment_authorization",t,r,v,h,
e);break;case "GCPServiceCardBlankBlock":ha("blank",t,r,v,h,e);break;case "GCPServiceCardReallyBlankBlock":ha("blank",t,r,v,h,e);break;case "GCPServiceCardBucketBlock":ha("bucket",t,r,v,h,e);break;case "GCPServiceCardCDNInterconnectBlock":ha("google_network_edge_cache",t,r,v,h,e);break;case "GCPServiceCardCloudDNSBlock":ha("blank",t,r,v,h,e);break;case "GCPServiceCardClusterBlock":ha("cluster",t,r,v,h,e);break;case "GCPServiceCardDiskSnapshotBlock":ha("persistent_disk_snapshot",t,r,v,h,e);break;case "GCPServiceCardEdgePopBlock":ha("google_network_edge_cache",
t,r,v,h,e);break;case "GCPServiceCardFrontEndPlatformServicesBlock":ha("frontend_platform_services",t,r,v,h,e);break;case "GCPServiceCardGatewayBlock":ha("gateway",t,r,v,h,e);break;case "GCPServiceCardGoogleNetworkBlock":ha("google_network_edge_cache",t,r,v,h,e);break;case "GCPServiceCardImageServicesBlock":ha("image_services",t,r,v,h,e);break;case "GCPServiceCardLoadBalancerBlock":ha("network_load_balancer",t,r,v,h,e);break;case "GCPServiceCardLocalComputeBlock":ha("dedicated_game_server",t,r,v,
@@ -264,8 +265,8 @@ h,e);break;case "GCPInputPayment":la("payment",1,.8,t,r,v,h,e);break;case "GCPIn
case "GCPInputCircuitBoard":la("circuit_board",1,.9,t,r,v,h,e);break;case "GCPInputLive":la("live",.74,1,t,r,v,h,e);break;case "GCPInputUsers":la("users",1,.63,t,r,v,h,e);break;case "GCPInputLaptop":la("laptop",1,.66,t,r,v,h,e);break;case "GCPInputApplication":la("application",1,.8,t,r,v,h,e);break;case "GCPInputLightbulb":la("lightbulb",.7,1,t,r,v,h,e);break;case "GCPInputGame":la("game",1,.54,t,r,v,h,e);break;case "GCPInputDesktop":la("desktop",1,.9,t,r,v,h,e);break;case "GCPInputDesktopAndMobile":la("desktop_and_mobile",
1,.66,t,r,v,h,e);break;case "GCPInputWebcam":la("webcam",.5,1,t,r,v,h,e);break;case "GCPInputSpeaker":la("speaker",.7,1,t,r,v,h,e);break;case "GCPInputRetail":la("retail",1,.89,t,r,v,h,e);break;case "GCPInputReport":la("report",1,1,t,r,v,h,e);break;case "GCPInputPhone":la("phone",.64,1,t,r,v,h,e);break;case "GCPInputBlank":la("transparent",1,1,t,r,v,h,e);break;case "PresentationFrameBlock":0==h.ZOrder?v.style+="strokeColor=none;fillColor=none;":(v.style+=l(h.Text),v.value=g(h.Text),v.style+=c(v.style,
h,e,v,x));break;case "SVGPathBlock2":try{for(var ce=h.LineWidth,de=h.LineColor,ee=h.FillColor,Id=h.DrawData.Data,Ec='<svg viewBox="0 0 1 1" xmlns="http://www.w3.org/2000/svg">',m=0;m<Id.length;m++)var Ob=Id[m],fe=Ob.a,ge="prop"==Ob.w?ce:Ob.w,Kb="prop"==Ob.s?de:Ob.s,I="prop"==Ob.f?ee:Ob.f,Ec=Ec+('<path d="'+fe+'" fill="'+I+'" stroke="'+Kb+'" stroke-width="'+ge+'"/>');Ec+="</svg>";v.style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,"+
-(window.btoa?btoa(Ec):Base64.encode(Ec,!0))}catch(Ld){}}v.style&&0>v.style.indexOf("html")&&(v.style+="html=1;");return v}var wb=0,xb=0,x=!1,Qc=["AEUSBBlock","AGSCutandpasteBlock","iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],Rc=["fpDoor"],qb={None:"none;",Arrow:"block;endFill=1;","Hollow Arrow":"block;endFill=0;","Open Arrow":"open;","CFN ERD Zero Or More Arrow":"ERzeroToMany;startSize=10;","CFN ERD One Or More Arrow":"ERoneToMany;startSize=10;","CFN ERD Many Arrow":"ERmany;startSize=10;",
-"CFN ERD Exactly One Arrow":"ERmandOne;startSize=10;","CFN ERD Zero Or One Arrow":"ERzeroToOne;startSize=10;","CFN ERD One Arrow":"ERone;startSize=16;",Generalization:"block;endFill=0;startSize=12;","Big Open Arrow":"open;startSize=10;",Asynch1:"openAsync;flipH=1;startSize=10;",Asynch2:"openAsync;startSize=10;",Aggregation:"diamond;endFill=0;startSize=16;",Composition:"diamond;endFill=1;startSize=16;",BlockEnd:"none;endFill=1;startSize=16;",Measure:"ERone;startSize=10;"},Gb={DefaultTextBlockNew:"text;strokeColor=none;fillColor=none",
+(window.btoa?btoa(Ec):Base64.encode(Ec,!0))}catch(Md){}}v.style&&0>v.style.indexOf("html")&&(v.style+="html=1;");return v}var vb=0,wb=0,x=!1,Rc=["AEUSBBlock","AGSCutandpasteBlock","iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],Sc=["fpDoor"],Gb={None:"none;",Arrow:"block;endFill=1;","Hollow Arrow":"block;endFill=0;","Open Arrow":"open;","CFN ERD Zero Or More Arrow":"ERzeroToMany;startSize=10;","CFN ERD One Or More Arrow":"ERoneToMany;startSize=10;","CFN ERD Many Arrow":"ERmany;startSize=10;",
+"CFN ERD Exactly One Arrow":"ERmandOne;startSize=10;","CFN ERD Zero Or One Arrow":"ERzeroToOne;startSize=10;","CFN ERD One Arrow":"ERone;startSize=16;",Generalization:"block;endFill=0;startSize=12;","Big Open Arrow":"open;startSize=10;",Asynch1:"openAsync;flipH=1;startSize=10;",Asynch2:"openAsync;startSize=10;",Aggregation:"diamond;endFill=0;startSize=16;",Composition:"diamond;endFill=1;startSize=16;",BlockEnd:"none;endFill=1;startSize=16;",Measure:"ERone;startSize=10;"},Fb={DefaultTextBlockNew:"text;strokeColor=none;fillColor=none",
DefaultTextBlock:"text;strokeColor=none;fillColor=none",DefaultSquareBlock:"",DefaultNoteBlock:"shape=note;size=15",DefaultNoteBlockV2:"shape=note;size=15",HotspotBlock:"strokeColor=none;opacity=50",ImageSearchBlock2:"shape=image",UserImage2Block:"shape=image",ProcessBlock:"",DecisionBlock:"rhombus",TerminatorBlock:"rounded=1;arcSize=50",PredefinedProcessBlock:"shape=process",DocumentBlock:"shape=document",MultiDocumentBlock:"shape=mxgraph.flowchart.multi-document",ManualInputBlock:"shape=manualInput;size=15",
PreparationBlock:"shape=hexagon;perimeter=hexagonPerimeter2",DataBlock:"shape=parallelogram;perimeter=parallelogramPerimeter;anchorPointDirection=0",DataBlockNew:"shape=parallelogram;perimeter=parallelogramPerimeter;anchorPointDirection=0",DatabaseBlock:"shape=cylinder;size=0.1;anchorPointDirection=0;boundedLbl=1;",DirectAccessStorageBlock:"shape=cylinder;direction=south;size=0.1;anchorPointDirection=0;boundedLbl=1;",InternalStorageBlock:"shape=internalStorage;dx=10;dy=10",PaperTapeBlock:"shape=tape;size=0.2",
ManualOperationBlockNew:"shape=trapezoid;perimeter=trapezoidPerimeter;anchorPointDirection=0;flipV=1",DelayBlock:"shape=delay",StoredDataBlock:"shape=dataStorage",MergeBlock:"triangle;direction=south;anchorPointDirection=0",ConnectorBlock:"ellipse",OrBlock:"shape=mxgraph.flowchart.summing_function",SummingJunctionBlock:"shape=mxgraph.flowchart.or",DisplayBlock:"shape=display",OffPageLinkBlock:"shape=offPageConnector",BraceNoteBlock:"mxCompositeShape",NoteBlock:"shape=partialRectangle;right=0",AdvancedSwimLaneBlock:"mxCompositeShape",
@@ -796,11 +797,11 @@ AWSGeneral_MultimediaAWS19:"shape=mxgraph.aws4.multimedia;labelPosition=center;v
AWSGeneral_SSLPadlockAWS19:"shape=mxgraph.aws4.ssl_padlock;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",AWSGeneral_TapeStorageAWS19:"shape=mxgraph.aws4.tape_storage;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",AWSGeneral_ToolkitAWS19:"shape=mxgraph.aws4.external_toolkit;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",AWSGeneral_TraditionalServerAWS19:"shape=mxgraph.aws4.traditional_server;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",
AWSGeneral_UserAWS19:"shape=mxgraph.aws4.user;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",AWSGeneral_UsersAWS19:"shape=mxgraph.aws4.users;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",AWSGeneral_VirtualPrivateCloudAWS19:"shape=mxgraph.aws4.virtual_private_cloud;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",ClientAWS19:"shape=mxgraph.aws4.client;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",
External_SDKAWS19:"shape=mxgraph.aws4.external_sdk;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",External_ToolkitAWS19:"shape=mxgraph.aws4.external_toolkit;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;strokeColor=none",AWSCloudAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fillColor=none",AWSCloudaltAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fillColor=none",
-RegionAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;dashed=1;fontColor=#0E82B8;fillColor=none",AvailabilityZoneAWS19_v2:"verticalAlign=top;fillColor=none;fillOpacity=100;dashed=1;dashPattern=5 5;fontColor=#0E82B8",SecuritygroupAWS19_v2:"verticalAlign=top;fillColor=none;fillOpacity=100;fontColor=#DD3522",AutoScalingAWS19_v2:"shape=mxgraph.aws4.groupCenter;grIcon=mxgraph.aws4.group_auto_scaling_group;grStroke=1;verticalAlign=top;fillColor=none;fillOpacity=100;fontColor=#D75F17;spacingTop=25;fillColor=none",
-VirtualprivatecloudVPCAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#2C8723;fillColor=none",PrivateSubnetAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;strokeColor=#0E82B8;fontColor=#0E82B8;fillColor=none",PublicSubnetAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;strokeColor=#2C8723;fontColor=#2C8723;fillColor=none",
+RegionAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;dashed=1;fontColor=#0E82B8;fillColor=none",AvailabilityZoneAWS19_v2:"verticalAlign=top;fillColor=none;fillOpacity=100;dashed=1;dashPattern=5 5;fontColor=#0E82B8",SecuritygroupAWS19_v2:"verticalAlign=top;fillColor=none;fillOpacity=100",AutoScalingAWS19_v2:"shape=mxgraph.aws4.groupCenter;grIcon=mxgraph.aws4.group_auto_scaling_group;grStroke=1;verticalAlign=top;fillColor=none;fillOpacity=100;fontColor=#D75F17;spacingTop=25;fillColor=none",
+VirtualprivatecloudVPCAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#2C8723;fillColor=none",PrivateSubnetAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;strokeColor=#0E82B8;fillColor=none",PublicSubnetAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;strokeColor=#2C8723;fontColor=#2C8723;fillColor=none",
ServercontentsAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_on_premise;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#5A6C86;fillColor=none",CorporatedatacenterAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_corporate_data_center;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#5A6C86;fillColor=none",ElasticBeanstalkcontainerAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_elastic_beanstalk;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#D75F17;fillColor=none",
EC2instancecontentsAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_ec2_instance_contents;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#D75F17;fillColor=none",SpotFleetAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_spot_fleet;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#D75F17;fillColor=none",AWSStepFunctionAWS19_v2:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_step_functions_workflow;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#CB1261;fillColor=none",
-GenericGroup1AWS19_v2:"verticalAlign=top;align=center;fillColor=none;fillOpacity=100;dashed=1;dashPattern=5 5;strokeColor=#5A6C86;fontColor=#5A6C86",GenericGroup2AWS19_v2:"verticalAlign=top;align=center;fillOpacity=100;fillColor=#EAECEF",AWSCloudAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fillColor=none",AWSCloudaltAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fillColor=none",
+GenericGroup1AWS19_v2:"verticalAlign=top;align=center;fillColor=none;fillOpacity=100;dashed=1;dashPattern=5 5;strokeColor=#5A6C86;fontColor=#5A6C86",GenericGroup2AWS19_v2:"verticalAlign=top;align=center",AWSCloudAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fillColor=none",AWSCloudaltAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fillColor=none",
RegionAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;dashed=1;fontColor=#0E82B8;fillColor=none",AvailabilityZoneAWS19:"verticalAlign=top;fillColor=none;fillOpacity=100;dashed=1;dashPattern=5 5;fontColor=#0E82B8;strokeOpacity=100;strokeColor=#147eba",SecuritygroupAWS19:"verticalAlign=top;fillColor=none;fillOpacity=100;fontColor=#DD3522",AutoScalingAWS19:"shape=mxgraph.aws4.groupCenter;grIcon=mxgraph.aws4.group_auto_scaling_group;grStroke=1;verticalAlign=top;fillColor=none;fillOpacity=100;fontColor=#D75F17;spacingTop=25;fillColor=none",
VirtualprivatecloudVPCAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#2C8723;fillColor=none",PrivateSubnetAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;verticalAlign=top;align=left;spacingLeft=30;strokeColor=#0E82B8;fontColor=#0E82B8;fillOpacity=13;fillColor=#147eba",PublicSubnetAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;verticalAlign=top;align=left;spacingLeft=30;strokeColor=#2C8723;fontColor=#2C8723;fillOpacity=13;fillColor=#248814",
ServercontentsAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_on_premise;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#5A6C86;fillColor=none",CorporatedatacenterAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_corporate_data_center;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#5A6C86;fillColor=none",ElasticBeanstalkcontainerAWS19:"shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_elastic_beanstalk;verticalAlign=top;align=left;spacingLeft=30;fillOpacity=100;fontColor=#D75F17;fillColor=none",
@@ -895,9 +896,9 @@ SMShopping:"shape=mxgraph.sitemap.shopping;strokeColor=#000000;fillColor=#E6E6E6
SMSettings:"shape=mxgraph.sitemap.settings;strokeColor=#000000;fillColor=#E6E6E6",SMSitemap:"shape=mxgraph.sitemap.sitemap;strokeColor=#000000;fillColor=#E6E6E6",SMSuccess:"shape=mxgraph.sitemap.success;strokeColor=#000000;fillColor=#E6E6E6",SMVideo:"shape=mxgraph.sitemap.video;strokeColor=#000000;fillColor=#E6E6E6",SMAudio:"shape=mxgraph.sitemap.audio;strokeColor=#000000;fillColor=#E6E6E6",SMBlog:"shape=mxgraph.sitemap.blog;strokeColor=#000000;fillColor=#E6E6E6",SMCalendar:"shape=mxgraph.sitemap.calendar;strokeColor=#000000;fillColor=#E6E6E6",
SMChart:"shape=mxgraph.sitemap.chart;strokeColor=#000000;fillColor=#E6E6E6",SMCloud:"shape=mxgraph.sitemap.cloud;strokeColor=#000000;fillColor=#E6E6E6",SMDocument:"shape=mxgraph.sitemap.document;strokeColor=#000000;fillColor=#E6E6E6",SMDownload:"shape=mxgraph.sitemap.download;strokeColor=#000000;fillColor=#E6E6E6",SMError:"shape=mxgraph.sitemap.error;strokeColor=#000000;fillColor=#E6E6E6",SMForm:"shape=mxgraph.sitemap.form;strokeColor=#000000;fillColor=#E6E6E6",SMGame:"shape=mxgraph.sitemap.game;strokeColor=#000000;fillColor=#E6E6E6",
SMJobs:"shape=mxgraph.sitemap.jobs;strokeColor=#000000;fillColor=#E6E6E6",SMLucid:"shape=mxgraph.sitemap.home;strokeColor=#000000;fillColor=#E6E6E6",SMNewspress:"shape=mxgraph.sitemap.news;strokeColor=#000000;fillColor=#E6E6E6",SMPhoto:"shape=mxgraph.sitemap.photo;strokeColor=#000000;fillColor=#E6E6E6",SMPortfolio:"shape=mxgraph.sitemap.portfolio;strokeColor=#000000;fillColor=#E6E6E6",SMPricing:"shape=mxgraph.sitemap.pricing;strokeColor=#000000;fillColor=#E6E6E6",SMProfile:"shape=mxgraph.sitemap.profile;strokeColor=#000000;fillColor=#E6E6E6",
-SMSlideshow:"shape=mxgraph.sitemap.slideshow;strokeColor=#000000;fillColor=#E6E6E6",SMUpload:"shape=mxgraph.sitemap.upload;strokeColor=#000000;fillColor=#E6E6E6",SVGPathBlock2:"mxCompositeShape",PresentationFrameBlock:"mxCompositeShape"},Sc=RegExp("{{(date{.*}|[^%^{^}]+)}}","g");LucidImporter.importState=function(a){function b(a){for(var b in a.Pages)k.push(a.Pages[b]);k.sort(function(a,b){return a.Properties.Order<b.Properties.Order?-1:a.Properties.Order>b.Properties.Order?1:0})}var d=['<?xml version="1.0" encoding="UTF-8"?>',
-"<mxfile>"],k=[];null!=a.state&&"1"==urlParams.dev&&null!=window.console&&console.log(JSON.stringify(JSON.parse(a.state),null,2));null!=a.state?b(JSON.parse(a.state)):null==a.Page&&null!=a.Pages?b(a):k.push(a);a=Ea();for(var n=new mxCodec,c=0;c<k.length;c++){d.push("<diagram");null!=k[c].Properties&&null!=k[c].Properties.Title&&d.push(' name="'+mxUtils.htmlEntities(k[c].Properties.Title)+'"');d.push(' id="'+c+'"');Qb(a,k[c],null,null,null,!0);var f=n.encode(a.getModel());a.getModel().clear();d.push(">"+
-Graph.compress(mxUtils.getXml(f))+"</diagram>")}d.push("</mxfile>");return d.join("")}})();function VsdxExport(f){function g(a,b){var d={"[Content_Types].xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Types xmlns='http://schemas.openxmlformats.org/package/2006/content-types'><Default Extension='png' ContentType='image/png'/><Default Extension='jpg' ContentType='image/jpeg'/><Default Extension='jpeg' ContentType='image/jpeg'/><Default Extension='svg' ContentType='image/svg+xml'/><Default Extension='bmp' ContentType='image/bmp'/><Default Extension='gif' ContentType='image/gif'/><Default Extension='emf' ContentType='image/x-emf' /><Default Extension='rels' ContentType='application/vnd.openxmlformats-package.relationships+xml' /><Default Extension='xml' ContentType='application/xml' /><Override PartName='/docProps/app.xml' ContentType='application/vnd.openxmlformats-officedocument.extended-properties+xml' /><Override PartName='/docProps/core.xml' ContentType='application/vnd.openxmlformats-package.core-properties+xml' /><Override PartName='/docProps/custom.xml' ContentType='application/vnd.openxmlformats-officedocument.custom-properties+xml' /><Override PartName='/visio/document.xml' ContentType='application/vnd.ms-visio.drawing.main+xml' /><Override PartName='/visio/masters/masters.xml' ContentType='application/vnd.ms-visio.masters+xml' /><Override PartName='/visio/masters/master1.xml' ContentType='application/vnd.ms-visio.master+xml'/><Override PartName='/visio/pages/page1.xml' ContentType='application/vnd.ms-visio.page+xml' /><Override PartName='/visio/pages/pages.xml' ContentType='application/vnd.ms-visio.pages+xml' /><Override PartName='/visio/windows.xml' ContentType='application/vnd.ms-visio.windows+xml' /></Types>",
+SMSlideshow:"shape=mxgraph.sitemap.slideshow;strokeColor=#000000;fillColor=#E6E6E6",SMUpload:"shape=mxgraph.sitemap.upload;strokeColor=#000000;fillColor=#E6E6E6",SVGPathBlock2:"mxCompositeShape",PresentationFrameBlock:"mxCompositeShape"},Tc=RegExp("{{(date{.*}|[^%^{^}]+)}}","g");LucidImporter.importState=function(a,b){function d(a){for(var b in a.Pages)n.push(a.Pages[b]);n.sort(function(a,b){return a.Properties.Order<b.Properties.Order?-1:a.Properties.Order>b.Properties.Order?1:0})}LucidImporter.imgSrcMap=
+b;var k=['<?xml version="1.0" encoding="UTF-8"?>',"<mxfile>"],n=[];null!=a.state&&"1"==urlParams.dev&&null!=window.console&&console.log(JSON.stringify(JSON.parse(a.state),null,2));null!=a.state?d(JSON.parse(a.state)):null==a.Page&&null!=a.Pages?d(a):n.push(a);for(var c=Ea(),f=new mxCodec,w=0;w<n.length;w++){k.push("<diagram");null!=n[w].Properties&&null!=n[w].Properties.Title&&k.push(' name="'+mxUtils.htmlEntities(n[w].Properties.Title)+'"');k.push(' id="'+w+'"');Qb(c,n[w],null,null,null,!0);var e=
+f.encode(c.getModel());c.getModel().clear();k.push(">"+Graph.compress(mxUtils.getXml(e))+"</diagram>")}k.push("</mxfile>");LucidImporter.imgSrcMap=null;return k.join("")}})();function VsdxExport(f){function g(a,b){var d={"[Content_Types].xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Types xmlns='http://schemas.openxmlformats.org/package/2006/content-types'><Default Extension='png' ContentType='image/png'/><Default Extension='jpg' ContentType='image/jpeg'/><Default Extension='jpeg' ContentType='image/jpeg'/><Default Extension='svg' ContentType='image/svg+xml'/><Default Extension='bmp' ContentType='image/bmp'/><Default Extension='gif' ContentType='image/gif'/><Default Extension='emf' ContentType='image/x-emf' /><Default Extension='rels' ContentType='application/vnd.openxmlformats-package.relationships+xml' /><Default Extension='xml' ContentType='application/xml' /><Override PartName='/docProps/app.xml' ContentType='application/vnd.openxmlformats-officedocument.extended-properties+xml' /><Override PartName='/docProps/core.xml' ContentType='application/vnd.openxmlformats-package.core-properties+xml' /><Override PartName='/docProps/custom.xml' ContentType='application/vnd.openxmlformats-officedocument.custom-properties+xml' /><Override PartName='/visio/document.xml' ContentType='application/vnd.ms-visio.drawing.main+xml' /><Override PartName='/visio/masters/masters.xml' ContentType='application/vnd.ms-visio.masters+xml' /><Override PartName='/visio/masters/master1.xml' ContentType='application/vnd.ms-visio.master+xml'/><Override PartName='/visio/pages/page1.xml' ContentType='application/vnd.ms-visio.page+xml' /><Override PartName='/visio/pages/pages.xml' ContentType='application/vnd.ms-visio.pages+xml' /><Override PartName='/visio/windows.xml' ContentType='application/vnd.ms-visio.windows+xml' /></Types>",
"_rels/.rels":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns='http://schemas.openxmlformats.org/package/2006/relationships'><Relationship Id='rId1' Type='http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties' Target='docProps/core.xml' /><Relationship Id='rId2' Type='http://schemas.microsoft.com/visio/2010/relationships/document' Target='visio/document.xml' /><Relationship Id='rId3' Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties' Target='docProps/custom.xml' /><Relationship Id='rId4' Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties' Target='docProps/app.xml' /></Relationships>",
"docProps/app.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns=\'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\' xmlns:vt=\'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\'><Application>Microsoft Visio</Application><AppVersion>15.0000</AppVersion><Template /><Manager /><Company /><HyperlinkBase /></Properties>',"docProps/core.xml":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><cp:coreProperties xmlns:cp='http://schemas.openxmlformats.org/package/2006/metadata/core-properties' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:dcterms='http://purl.org/dc/terms/' xmlns:dcmitype='http://purl.org/dc/dcmitype/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><dc:title /><dc:subject /><dc:creator /><cp:keywords /><dc:description /><cp:category /><dc:language>en-US</dc:language></cp:coreProperties>",
"docProps/custom.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns=\'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\' xmlns:vt=\'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\' />',"visio/document.xml":"<?xml version='1.0' encoding='utf-8' ?><VisioDocument xmlns='http://schemas.microsoft.com/office/visio/2012/main' xmlns:r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' xml:space='preserve'><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><SnapAngles/><DynamicGridEnabled>1</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='24' RGB='#000000'/><ColorEntry IX='25' RGB='#FFFFFF'/><ColorEntry IX='26' RGB='#FF0000'/><ColorEntry IX='27' RGB='#00FF00'/><ColorEntry IX='28' RGB='#0000FF'/><ColorEntry IX='29' RGB='#FFFF00'/><ColorEntry IX='30' RGB='#FF00FF'/><ColorEntry IX='31' RGB='#00FFFF'/><ColorEntry IX='32' RGB='#800000'/><ColorEntry IX='33' RGB='#008000'/><ColorEntry IX='34' RGB='#000080'/><ColorEntry IX='35' RGB='#808000'/><ColorEntry IX='36' RGB='#800080'/><ColorEntry IX='37' RGB='#008080'/><ColorEntry IX='38' RGB='#C0C0C0'/><ColorEntry IX='39' RGB='#E6E6E6'/><ColorEntry IX='40' RGB='#CDCDCD'/><ColorEntry IX='41' RGB='#B3B3B3'/><ColorEntry IX='42' RGB='#9A9A9A'/><ColorEntry IX='43' RGB='#808080'/><ColorEntry IX='44' RGB='#666666'/><ColorEntry IX='45' RGB='#4D4D4D'/><ColorEntry IX='46' RGB='#333333'/><ColorEntry IX='47' RGB='#1A1A1A'/><ColorEntry IX='48' RGB='#7F7F7F'/><ColorEntry IX='49' RGB='#99004D'/><ColorEntry IX='50' RGB='#FF0080'/><ColorEntry IX='51' RGB='#CC0066'/></Colors><FaceNames><FaceName NameU='Calibri' UnicodeRanges='-536859905 -1073732485 9 0' CharSets='536871423 0' Panose='2 15 5 2 2 2 4 3 2 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' IsCustomNameU='1' Name='No Style' IsCustomName='1'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='0.01041666666666667'/><Cell N='LineColor' V='0'/><Cell N='LinePattern' V='1'/><Cell N='Rounding' V='0'/><Cell N='EndArrowSize' V='2'/><Cell N='BeginArrow' V='0'/><Cell N='EndArrow' V='0'/><Cell N='LineCap' V='0'/><Cell N='BeginArrowSize' V='2'/><Cell N='LineColorTrans' V='0'/><Cell N='CompoundType' V='0'/><Cell N='FillForegnd' V='1'/><Cell N='FillBkgnd' V='0'/><Cell N='FillPattern' V='1'/><Cell N='ShdwForegnd' V='0'/><Cell N='ShdwPattern' V='0'/><Cell N='FillForegndTrans' V='0'/><Cell N='FillBkgndTrans' V='0'/><Cell N='ShdwForegndTrans' V='0'/><Cell N='ShapeShdwType' V='0'/><Cell N='ShapeShdwOffsetX' V='0'/><Cell N='ShapeShdwOffsetY' V='0'/><Cell N='ShapeShdwObliqueAngle' V='0'/><Cell N='ShapeShdwScaleFactor' V='1'/><Cell N='ShapeShdwBlur' V='0'/><Cell N='ShapeShdwShow' V='0'/><Cell N='LeftMargin' V='0'/><Cell N='RightMargin' V='0'/><Cell N='TopMargin' V='0'/><Cell N='BottomMargin' V='0'/><Cell N='VerticalAlign' V='1'/><Cell N='TextBkgnd' V='0'/><Cell N='DefaultTabStop' V='0.5'/><Cell N='TextDirection' V='0'/><Cell N='TextBkgndTrans' V='0'/><Cell N='LockWidth' V='0'/><Cell N='LockHeight' V='0'/><Cell N='LockMoveX' V='0'/><Cell N='LockMoveY' V='0'/><Cell N='LockAspect' V='0'/><Cell N='LockDelete' V='0'/><Cell N='LockBegin' V='0'/><Cell N='LockEnd' V='0'/><Cell N='LockRotate' V='0'/><Cell N='LockCrop' V='0'/><Cell N='LockVtxEdit' V='0'/><Cell N='LockTextEdit' V='0'/><Cell N='LockFormat' V='0'/><Cell N='LockGroup' V='0'/><Cell N='LockCalcWH' V='0'/><Cell N='LockSelect' V='0'/><Cell N='LockCustProp' V='0'/><Cell N='LockFromGroupFormat' V='0'/><Cell N='LockThemeColors' V='0'/><Cell N='LockThemeEffects' V='0'/><Cell N='LockThemeConnectors' V='0'/><Cell N='LockThemeFonts' V='0'/><Cell N='LockThemeIndex' V='0'/><Cell N='LockReplace' V='0'/><Cell N='LockVariation' V='0'/><Cell N='NoObjHandles' V='0'/><Cell N='NonPrinting' V='0'/><Cell N='NoCtlHandles' V='0'/><Cell N='NoAlignBox' V='0'/><Cell N='UpdateAlignBox' V='0'/><Cell N='HideText' V='0'/><Cell N='DynFeedback' V='0'/><Cell N='GlueType' V='0'/><Cell N='WalkPreference' V='0'/><Cell N='BegTrigger' V='0' F='No Formula'/><Cell N='EndTrigger' V='0' F='No Formula'/><Cell N='ObjType' V='0'/><Cell N='Comment' V=''/><Cell N='IsDropSource' V='0'/><Cell N='NoLiveDynamics' V='0'/><Cell N='LocalizeMerge' V='0'/><Cell N='NoProofing' V='0'/><Cell N='Calendar' V='0'/><Cell N='LangID' V='en-US'/><Cell N='ShapeKeywords' V=''/><Cell N='DropOnPageScale' V='1'/><Cell N='TheData' V='0' F='No Formula'/><Cell N='TheText' V='0' F='No Formula'/><Cell N='EventDblClick' V='0' F='No Formula'/><Cell N='EventXFMod' V='0' F='No Formula'/><Cell N='EventDrop' V='0' F='No Formula'/><Cell N='EventMultiDrop' V='0' F='No Formula'/><Cell N='HelpTopic' V=''/><Cell N='Copyright' V=''/><Cell N='LayerMember' V=''/><Cell N='XRulerDensity' V='32'/><Cell N='YRulerDensity' V='32'/><Cell N='XRulerOrigin' V='0'/><Cell N='YRulerOrigin' V='0'/><Cell N='XGridDensity' V='8'/><Cell N='YGridDensity' V='8'/><Cell N='XGridSpacing' V='0'/><Cell N='YGridSpacing' V='0'/><Cell N='XGridOrigin' V='0'/><Cell N='YGridOrigin' V='0'/><Cell N='Gamma' V='1'/><Cell N='Contrast' V='0.5'/><Cell N='Brightness' V='0.5'/><Cell N='Sharpen' V='0'/><Cell N='Blur' V='0'/><Cell N='Denoise' V='0'/><Cell N='Transparency' V='0'/><Cell N='SelectMode' V='1'/><Cell N='DisplayMode' V='2'/><Cell N='IsDropTarget' V='0'/><Cell N='IsSnapTarget' V='1'/><Cell N='IsTextEditTarget' V='1'/><Cell N='DontMoveChildren' V='0'/><Cell N='ShapePermeableX' V='0'/><Cell N='ShapePermeableY' V='0'/><Cell N='ShapePermeablePlace' V='0'/><Cell N='Relationships' V='0'/><Cell N='ShapeFixedCode' V='0'/><Cell N='ShapePlowCode' V='0'/><Cell N='ShapeRouteStyle' V='0'/><Cell N='ShapePlaceStyle' V='0'/><Cell N='ConFixedCode' V='0'/><Cell N='ConLineJumpCode' V='0'/><Cell N='ConLineJumpStyle' V='0'/><Cell N='ConLineJumpDirX' V='0'/><Cell N='ConLineJumpDirY' V='0'/><Cell N='ShapePlaceFlip' V='0'/><Cell N='ConLineRouteExt' V='0'/><Cell N='ShapeSplit' V='0'/><Cell N='ShapeSplittable' V='0'/><Cell N='DisplayLevel' V='0'/><Cell N='ResizePage' V='0'/><Cell N='EnableGrid' V='0'/><Cell N='DynamicsOff' V='0'/><Cell N='CtrlAsInput' V='0'/><Cell N='AvoidPageBreaks' V='0'/><Cell N='PlaceStyle' V='0'/><Cell N='RouteStyle' V='0'/><Cell N='PlaceDepth' V='0'/><Cell N='PlowCode' V='0'/><Cell N='LineJumpCode' V='1'/><Cell N='LineJumpStyle' V='0'/><Cell N='PageLineJumpDirX' V='0'/><Cell N='PageLineJumpDirY' V='0'/><Cell N='LineToNodeX' V='0.125'/><Cell N='LineToNodeY' V='0.125'/><Cell N='BlockSizeX' V='0.25'/><Cell N='BlockSizeY' V='0.25'/><Cell N='AvenueSizeX' V='0.375'/><Cell N='AvenueSizeY' V='0.375'/><Cell N='LineToLineX' V='0.125'/><Cell N='LineToLineY' V='0.125'/><Cell N='LineJumpFactorX' V='0.66666666666667'/><Cell N='LineJumpFactorY' V='0.66666666666667'/><Cell N='LineAdjustFrom' V='0'/><Cell N='LineAdjustTo' V='0'/><Cell N='PlaceFlip' V='0'/><Cell N='LineRouteExt' V='0'/><Cell N='PageShapeSplit' V='0'/><Cell N='PageLeftMargin' V='0.25'/><Cell N='PageRightMargin' V='0.25'/><Cell N='PageTopMargin' V='0.25'/><Cell N='PageBottomMargin' V='0.25'/><Cell N='ScaleX' V='1'/><Cell N='ScaleY' V='1'/><Cell N='PagesX' V='1'/><Cell N='PagesY' V='1'/><Cell N='CenterX' V='0'/><Cell N='CenterY' V='0'/><Cell N='OnPage' V='0'/><Cell N='PrintGrid' V='0'/><Cell N='PrintPageOrientation' V='1'/><Cell N='PaperKind' V='1'/><Cell N='PaperSource' V='7'/><Cell N='QuickStyleLineColor' V='100'/><Cell N='QuickStyleFillColor' V='100'/><Cell N='QuickStyleShadowColor' V='100'/><Cell N='QuickStyleFontColor' V='100'/><Cell N='QuickStyleLineMatrix' V='100'/><Cell N='QuickStyleFillMatrix' V='100'/><Cell N='QuickStyleEffectsMatrix' V='100'/><Cell N='QuickStyleFontMatrix' V='100'/><Cell N='QuickStyleType' V='0'/><Cell N='QuickStyleVariation' V='0'/><Cell N='LineGradientDir' V='0'/><Cell N='LineGradientAngle' V='1.5707963267949'/><Cell N='FillGradientDir' V='0'/><Cell N='FillGradientAngle' V='1.5707963267949'/><Cell N='LineGradientEnabled' V='0'/><Cell N='FillGradientEnabled' V='0'/><Cell N='RotateGradientWithShape' V='1'/><Cell N='UseGroupGradient' V='0'/><Cell N='BevelTopType' V='0'/><Cell N='BevelTopWidth' V='0'/><Cell N='BevelTopHeight' V='0'/><Cell N='BevelBottomType' V='0'/><Cell N='BevelBottomWidth' V='0'/><Cell N='BevelBottomHeight' V='0'/><Cell N='BevelDepthColor' V='1'/><Cell N='BevelDepthSize' V='0'/><Cell N='BevelContourColor' V='0'/><Cell N='BevelContourSize' V='0'/><Cell N='BevelMaterialType' V='0'/><Cell N='BevelLightingType' V='0'/><Cell N='BevelLightingAngle' V='0'/><Cell N='RotationXAngle' V='0'/><Cell N='RotationYAngle' V='0'/><Cell N='RotationZAngle' V='0'/><Cell N='RotationType' V='0'/><Cell N='Perspective' V='0'/><Cell N='DistanceFromGround' V='0'/><Cell N='KeepTextFlat' V='0'/><Cell N='ReflectionTrans' V='0'/><Cell N='ReflectionSize' V='0'/><Cell N='ReflectionDist' V='0'/><Cell N='ReflectionBlur' V='0'/><Cell N='GlowColor' V='1'/><Cell N='GlowColorTrans' V='0'/><Cell N='GlowSize' V='0'/><Cell N='SoftEdgesSize' V='0'/><Cell N='SketchSeed' V='0'/><Cell N='SketchEnabled' V='0'/><Cell N='SketchAmount' V='5'/><Cell N='SketchLineWeight' V='0.04166666666666666' U='PT'/><Cell N='SketchLineChange' V='0.14'/><Cell N='SketchFillChange' V='0.1'/><Cell N='ColorSchemeIndex' V='0'/><Cell N='EffectSchemeIndex' V='0'/><Cell N='ConnectorSchemeIndex' V='0'/><Cell N='FontSchemeIndex' V='0'/><Cell N='ThemeIndex' V='0'/><Cell N='VariationColorIndex' V='0'/><Cell N='VariationStyleIndex' V='0'/><Cell N='EmbellishmentIndex' V='0'/><Cell N='ReplaceLockShapeData' V='0'/><Cell N='ReplaceLockText' V='0'/><Cell N='ReplaceLockFormat' V='0'/><Cell N='ReplaceCopyCells' V='0' U='BOOL' F='No Formula'/><Cell N='PageWidth' V='0' F='No Formula'/><Cell N='PageHeight' V='0' F='No Formula'/><Cell N='ShdwOffsetX' V='0' F='No Formula'/><Cell N='ShdwOffsetY' V='0' F='No Formula'/><Cell N='PageScale' V='0' U='IN_F' F='No Formula'/><Cell N='DrawingScale' V='0' U='IN_F' F='No Formula'/><Cell N='DrawingSizeType' V='0' F='No Formula'/><Cell N='DrawingScaleType' V='0' F='No Formula'/><Cell N='InhibitSnap' V='0' F='No Formula'/><Cell N='PageLockReplace' V='0' U='BOOL' F='No Formula'/><Cell N='PageLockDuplicate' V='0' U='BOOL' F='No Formula'/><Cell N='UIVisibility' V='0' F='No Formula'/><Cell N='ShdwType' V='0' F='No Formula'/><Cell N='ShdwObliqueAngle' V='0' F='No Formula'/><Cell N='ShdwScaleFactor' V='0' F='No Formula'/><Cell N='DrawingResizeType' V='0' F='No Formula'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Calibri'/><Cell N='Color' V='0'/><Cell N='Style' V='0'/><Cell N='Case' V='0'/><Cell N='Pos' V='0'/><Cell N='FontScale' V='1'/><Cell N='Size' V='0.1666666666666667'/><Cell N='DblUnderline' V='0'/><Cell N='Overline' V='0'/><Cell N='Strikethru' V='0'/><Cell N='DoubleStrikethrough' V='0'/><Cell N='Letterspace' V='0'/><Cell N='ColorTrans' V='0'/><Cell N='AsianFont' V='0'/><Cell N='ComplexScriptFont' V='0'/><Cell N='ComplexScriptSize' V='-1'/><Cell N='LangID' V='en-US'/></Row></Section><Section N='Paragraph'><Row IX='0'><Cell N='IndFirst' V='0'/><Cell N='IndLeft' V='0'/><Cell N='IndRight' V='0'/><Cell N='SpLine' V='-1.2'/><Cell N='SpBefore' V='0'/><Cell N='SpAfter' V='0'/><Cell N='HorzAlign' V='1'/><Cell N='Bullet' V='0'/><Cell N='BulletStr' V=''/><Cell N='BulletFont' V='0'/><Cell N='BulletFontSize' V='-1'/><Cell N='TextPosAfterBullet' V='0'/><Cell N='Flags' V='0'/></Row></Section><Section N='Tabs'><Row IX='0'/></Section><Section N='LineGradient'><Row IX='0'><Cell N='GradientStopColor' V='1'/><Cell N='GradientStopColorTrans' V='0'/><Cell N='GradientStopPosition' V='0'/></Row></Section><Section N='FillGradient'><Row IX='0'><Cell N='GradientStopColor' V='1'/><Cell N='GradientStopColorTrans' V='0'/><Cell N='GradientStopPosition' V='0'/></Row></Section></StyleSheet><StyleSheet ID='1' NameU='Text Only' IsCustomNameU='1' Name='Text Only' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='Themed' F='Inh'/><Cell N='LineColor' V='Themed' F='Inh'/><Cell N='LinePattern' V='Themed' F='Inh'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Cell N='FillForegnd' V='Themed' F='Inh'/><Cell N='FillBkgnd' V='Themed' F='Inh'/><Cell N='FillPattern' V='Themed' F='Inh'/><Cell N='ShdwForegnd' V='Themed' F='Inh'/><Cell N='ShdwPattern' V='Themed' F='Inh'/><Cell N='FillForegndTrans' V='Themed' F='Inh'/><Cell N='FillBkgndTrans' V='Themed' F='Inh'/><Cell N='ShdwForegndTrans' V='Themed' F='Inh'/><Cell N='ShapeShdwType' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetX' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetY' V='Themed' F='Inh'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='Inh'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='Inh'/><Cell N='ShapeShdwBlur' V='Themed' F='Inh'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LeftMargin' V='0'/><Cell N='RightMargin' V='0'/><Cell N='TopMargin' V='0'/><Cell N='BottomMargin' V='0'/><Cell N='VerticalAlign' V='0'/><Cell N='TextBkgnd' V='0'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='Inh'/><Cell N='LineGradientAngle' V='Themed' F='Inh'/><Cell N='FillGradientDir' V='Themed' F='Inh'/><Cell N='FillGradientAngle' V='Themed' F='Inh'/><Cell N='LineGradientEnabled' V='Themed' F='Inh'/><Cell N='FillGradientEnabled' V='Themed' F='Inh'/><Cell N='RotateGradientWithShape' V='Themed' F='Inh'/><Cell N='UseGroupGradient' V='Themed' F='Inh'/><Section N='Paragraph'><Row IX='0'><Cell N='IndFirst' V='0' F='Inh'/><Cell N='IndLeft' V='0' F='Inh'/><Cell N='IndRight' V='0' F='Inh'/><Cell N='SpLine' V='-1.2' F='Inh'/><Cell N='SpBefore' V='0' F='Inh'/><Cell N='SpAfter' V='0' F='Inh'/><Cell N='HorzAlign' V='0'/><Cell N='Bullet' V='0' F='Inh'/><Cell N='BulletStr' V='' F='Inh'/><Cell N='BulletFont' V='0' F='Inh'/><Cell N='BulletFontSize' V='-1' F='Inh'/><Cell N='TextPosAfterBullet' V='0' F='Inh'/><Cell N='Flags' V='0' F='Inh'/></Row></Section></StyleSheet><StyleSheet ID='2' NameU='None' IsCustomNameU='1' Name='None' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='Themed' F='Inh'/><Cell N='LineColor' V='Themed' F='Inh'/><Cell N='LinePattern' V='0'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Cell N='FillForegnd' V='Themed' F='Inh'/><Cell N='FillBkgnd' V='Themed' F='Inh'/><Cell N='FillPattern' V='0'/><Cell N='ShdwForegnd' V='Themed' F='Inh'/><Cell N='ShdwPattern' V='Themed' F='Inh'/><Cell N='FillForegndTrans' V='Themed' F='Inh'/><Cell N='FillBkgndTrans' V='Themed' F='Inh'/><Cell N='ShdwForegndTrans' V='Themed' F='Inh'/><Cell N='ShapeShdwType' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetX' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetY' V='Themed' F='Inh'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='Inh'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='Inh'/><Cell N='ShapeShdwBlur' V='Themed' F='Inh'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='Inh'/><Cell N='LineGradientAngle' V='Themed' F='Inh'/><Cell N='FillGradientDir' V='Themed' F='Inh'/><Cell N='FillGradientAngle' V='Themed' F='Inh'/><Cell N='LineGradientEnabled' V='0'/><Cell N='FillGradientEnabled' V='0'/><Cell N='RotateGradientWithShape' V='Themed' F='Inh'/><Cell N='UseGroupGradient' V='Themed' F='Inh'/><Cell N='QuickStyleLineColor' V='100' F='Inh'/><Cell N='QuickStyleFillColor' V='100' F='Inh'/><Cell N='QuickStyleShadowColor' V='100' F='Inh'/><Cell N='QuickStyleFontColor' V='100' F='Inh'/><Cell N='QuickStyleLineMatrix' V='100' F='Inh'/><Cell N='QuickStyleFillMatrix' V='100' F='Inh'/><Cell N='QuickStyleEffectsMatrix' V='0' F='GUARD(0)'/><Cell N='QuickStyleFontMatrix' V='100' F='Inh'/><Cell N='QuickStyleType' V='0' F='Inh'/><Cell N='QuickStyleVariation' V='2'/></StyleSheet><StyleSheet ID='3' NameU='Normal' IsCustomNameU='1' Name='Normal' IsCustomName='1' LineStyle='6' FillStyle='6' TextStyle='6'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LeftMargin' V='0.05555555555555555' U='PT'/><Cell N='RightMargin' V='0.05555555555555555' U='PT'/><Cell N='TopMargin' V='0.05555555555555555' U='PT'/><Cell N='BottomMargin' V='0.05555555555555555' U='PT'/><Cell N='VerticalAlign' V='1' F='Inh'/><Cell N='TextBkgnd' V='0' F='Inh'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/></StyleSheet><StyleSheet ID='4' NameU='Guide' IsCustomNameU='1' Name='Guide' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='0' U='PT'/><Cell N='LineColor' V='#7f7f7f'/><Cell N='LinePattern' V='23'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Cell N='FillForegnd' V='Themed' F='Inh'/><Cell N='FillBkgnd' V='Themed' F='Inh'/><Cell N='FillPattern' V='0'/><Cell N='ShdwForegnd' V='Themed' F='Inh'/><Cell N='ShdwPattern' V='Themed' F='Inh'/><Cell N='FillForegndTrans' V='Themed' F='Inh'/><Cell N='FillBkgndTrans' V='Themed' F='Inh'/><Cell N='ShdwForegndTrans' V='Themed' F='Inh'/><Cell N='ShapeShdwType' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetX' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetY' V='Themed' F='Inh'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='Inh'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='Inh'/><Cell N='ShapeShdwBlur' V='Themed' F='Inh'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='Inh'/><Cell N='LineGradientAngle' V='Themed' F='Inh'/><Cell N='FillGradientDir' V='Themed' F='Inh'/><Cell N='FillGradientAngle' V='Themed' F='Inh'/><Cell N='LineGradientEnabled' V='0'/><Cell N='FillGradientEnabled' V='0'/><Cell N='RotateGradientWithShape' V='Themed' F='Inh'/><Cell N='UseGroupGradient' V='Themed' F='Inh'/><Cell N='LeftMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='RightMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='TopMargin' V='0'/><Cell N='BottomMargin' V='0'/><Cell N='VerticalAlign' V='2'/><Cell N='TextBkgnd' V='0' F='Inh'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/><Cell N='NoObjHandles' V='0' F='Inh'/><Cell N='NonPrinting' V='1'/><Cell N='NoCtlHandles' V='0' F='Inh'/><Cell N='NoAlignBox' V='0' F='Inh'/><Cell N='UpdateAlignBox' V='0' F='Inh'/><Cell N='HideText' V='0' F='Inh'/><Cell N='DynFeedback' V='0' F='Inh'/><Cell N='GlueType' V='0' F='Inh'/><Cell N='WalkPreference' V='0' F='Inh'/><Cell N='BegTrigger' V='0' F='No Formula'/><Cell N='EndTrigger' V='0' F='No Formula'/><Cell N='ObjType' V='0' F='Inh'/><Cell N='Comment' V='' F='Inh'/><Cell N='IsDropSource' V='0' F='Inh'/><Cell N='NoLiveDynamics' V='0' F='Inh'/><Cell N='LocalizeMerge' V='0' F='Inh'/><Cell N='NoProofing' V='0' F='Inh'/><Cell N='Calendar' V='0' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/><Cell N='ShapeKeywords' V='' F='Inh'/><Cell N='DropOnPageScale' V='1' F='Inh'/><Cell N='ShapePermeableX' V='1'/><Cell N='ShapePermeableY' V='1'/><Cell N='ShapePermeablePlace' V='1'/><Cell N='Relationships' V='0' F='Inh'/><Cell N='ShapeFixedCode' V='0' F='Inh'/><Cell N='ShapePlowCode' V='0' F='Inh'/><Cell N='ShapeRouteStyle' V='0' F='Inh'/><Cell N='ShapePlaceStyle' V='0' F='Inh'/><Cell N='ConFixedCode' V='0' F='Inh'/><Cell N='ConLineJumpCode' V='0' F='Inh'/><Cell N='ConLineJumpStyle' V='0' F='Inh'/><Cell N='ConLineJumpDirX' V='0' F='Inh'/><Cell N='ConLineJumpDirY' V='0' F='Inh'/><Cell N='ShapePlaceFlip' V='0' F='Inh'/><Cell N='ConLineRouteExt' V='0' F='Inh'/><Cell N='ShapeSplit' V='0' F='Inh'/><Cell N='ShapeSplittable' V='0' F='Inh'/><Cell N='DisplayLevel' V='0' F='Inh'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Themed' F='Inh'/><Cell N='Color' V='4'/><Cell N='Style' V='Themed' F='Inh'/><Cell N='Case' V='0' F='Inh'/><Cell N='Pos' V='0' F='Inh'/><Cell N='FontScale' V='1' F='Inh'/><Cell N='Size' V='0.125'/><Cell N='DblUnderline' V='0' F='Inh'/><Cell N='Overline' V='0' F='Inh'/><Cell N='Strikethru' V='0' F='Inh'/><Cell N='DoubleStrikethrough' V='0' F='Inh'/><Cell N='Letterspace' V='0' F='Inh'/><Cell N='ColorTrans' V='0' F='Inh'/><Cell N='AsianFont' V='Themed' F='Inh'/><Cell N='ComplexScriptFont' V='Themed' F='Inh'/><Cell N='ComplexScriptSize' V='-1' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/></Row></Section></StyleSheet><StyleSheet ID='6' NameU='Theme' IsCustomNameU='1' Name='Theme' IsCustomName='1' LineStyle='0' FillStyle='0' TextStyle='0'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='Themed' F='THEMEVAL()'/><Cell N='LineColor' V='Themed' F='THEMEVAL()'/><Cell N='LinePattern' V='Themed' F='THEMEVAL()'/><Cell N='Rounding' V='Themed' F='THEMEVAL()'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='THEMEVAL()'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='CompoundType' V='Themed' F='THEMEVAL()'/><Cell N='FillForegnd' V='Themed' F='THEMEVAL()'/><Cell N='FillBkgnd' V='Themed' F='THEMEVAL()'/><Cell N='FillPattern' V='Themed' F='THEMEVAL()'/><Cell N='ShdwForegnd' V='Themed' F='THEMEVAL()'/><Cell N='ShdwPattern' V='Themed' F='THEMEVAL()'/><Cell N='FillForegndTrans' V='Themed' F='THEMEVAL()'/><Cell N='FillBkgndTrans' V='Themed' F='THEMEVAL()'/><Cell N='ShdwForegndTrans' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwType' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwOffsetX' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwOffsetY' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwBlur' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='THEMEVAL()'/><Cell N='LineGradientAngle' V='Themed' F='THEMEVAL()'/><Cell N='FillGradientDir' V='Themed' F='THEMEVAL()'/><Cell N='FillGradientAngle' V='Themed' F='THEMEVAL()'/><Cell N='LineGradientEnabled' V='Themed' F='THEMEVAL()'/><Cell N='FillGradientEnabled' V='Themed' F='THEMEVAL()'/><Cell N='RotateGradientWithShape' V='Themed' F='THEMEVAL()'/><Cell N='UseGroupGradient' V='Themed' F='THEMEVAL()'/><Cell N='BevelTopType' V='Themed' F='THEMEVAL()'/><Cell N='BevelTopWidth' V='Themed' F='THEMEVAL()'/><Cell N='BevelTopHeight' V='Themed' F='THEMEVAL()'/><Cell N='BevelBottomType' V='0' F='Inh'/><Cell N='BevelBottomWidth' V='0' F='Inh'/><Cell N='BevelBottomHeight' V='0' F='Inh'/><Cell N='BevelDepthColor' V='1' F='Inh'/><Cell N='BevelDepthSize' V='0' F='Inh'/><Cell N='BevelContourColor' V='Themed' F='THEMEVAL()'/><Cell N='BevelContourSize' V='Themed' F='THEMEVAL()'/><Cell N='BevelMaterialType' V='Themed' F='THEMEVAL()'/><Cell N='BevelLightingType' V='Themed' F='THEMEVAL()'/><Cell N='BevelLightingAngle' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionTrans' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionSize' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionDist' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionBlur' V='Themed' F='THEMEVAL()'/><Cell N='GlowColor' V='Themed' F='THEMEVAL()'/><Cell N='GlowColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GlowSize' V='Themed' F='THEMEVAL()'/><Cell N='SoftEdgesSize' V='Themed' F='THEMEVAL()'/><Cell N='SketchSeed' V='0' F='Inh'/><Cell N='SketchEnabled' V='Themed' F='THEMEVAL()'/><Cell N='SketchAmount' V='Themed' F='THEMEVAL()'/><Cell N='SketchLineWeight' V='Themed' F='THEMEVAL()'/><Cell N='SketchLineChange' V='Themed' F='THEMEVAL()'/><Cell N='SketchFillChange' V='Themed' F='THEMEVAL()'/><Cell N='QuickStyleLineColor' V='100'/><Cell N='QuickStyleFillColor' V='100'/><Cell N='QuickStyleShadowColor' V='100'/><Cell N='QuickStyleFontColor' V='100'/><Cell N='QuickStyleLineMatrix' V='100'/><Cell N='QuickStyleFillMatrix' V='100'/><Cell N='QuickStyleEffectsMatrix' V='100'/><Cell N='QuickStyleFontMatrix' V='100'/><Cell N='QuickStyleType' V='0' F='Inh'/><Cell N='QuickStyleVariation' V='0' F='Inh'/><Cell N='ColorSchemeIndex' V='65534'/><Cell N='EffectSchemeIndex' V='65534'/><Cell N='ConnectorSchemeIndex' V='65534'/><Cell N='FontSchemeIndex' V='65534'/><Cell N='ThemeIndex' V='65534'/><Cell N='VariationColorIndex' V='65534'/><Cell N='VariationStyleIndex' V='65534'/><Cell N='EmbellishmentIndex' V='65534'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Themed' F='THEMEVAL()'/><Cell N='Color' V='Themed' F='THEMEVAL()'/><Cell N='Style' V='Themed' F='THEMEVAL()'/><Cell N='Case' V='0' F='Inh'/><Cell N='Pos' V='0' F='Inh'/><Cell N='FontScale' V='1' F='Inh'/><Cell N='Size' V='0.1666666666666667' F='Inh'/><Cell N='DblUnderline' V='0' F='Inh'/><Cell N='Overline' V='0' F='Inh'/><Cell N='Strikethru' V='0' F='Inh'/><Cell N='DoubleStrikethrough' V='0' F='Inh'/><Cell N='Letterspace' V='0' F='Inh'/><Cell N='ColorTrans' V='0' F='Inh'/><Cell N='AsianFont' V='Themed' F='THEMEVAL()'/><Cell N='ComplexScriptFont' V='Themed' F='THEMEVAL()'/><Cell N='ComplexScriptSize' V='-1' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/></Row></Section><Section N='FillGradient'><Row IX='0'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='1'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='2'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='3'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='4'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='5'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='6'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='7'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='8'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='9'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row></Section><Section N='LineGradient'><Row IX='0'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='1'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='2'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='3'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='4'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='5'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='6'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='7'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='8'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='9'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row></Section></StyleSheet><StyleSheet ID='7' NameU='Connector' IsCustomNameU='1' Name='Connector' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LeftMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='RightMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='TopMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='BottomMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='VerticalAlign' V='1' F='Inh'/><Cell N='TextBkgnd' V='#ffffff' F='THEMEGUARD(THEMEVAL(\"BackgroundColor\")+1)'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/><Cell N='NoObjHandles' V='0' F='Inh'/><Cell N='NonPrinting' V='0' F='Inh'/><Cell N='NoCtlHandles' V='0' F='Inh'/><Cell N='NoAlignBox' V='0' F='Inh'/><Cell N='UpdateAlignBox' V='0' F='Inh'/><Cell N='HideText' V='0' F='Inh'/><Cell N='DynFeedback' V='0' F='Inh'/><Cell N='GlueType' V='0' F='Inh'/><Cell N='WalkPreference' V='0' F='Inh'/><Cell N='BegTrigger' V='0' F='No Formula'/><Cell N='EndTrigger' V='0' F='No Formula'/><Cell N='ObjType' V='0' F='Inh'/><Cell N='Comment' V='' F='Inh'/><Cell N='IsDropSource' V='0' F='Inh'/><Cell N='NoLiveDynamics' V='0' F='Inh'/><Cell N='LocalizeMerge' V='0' F='Inh'/><Cell N='NoProofing' V='0' F='Inh'/><Cell N='Calendar' V='0' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/><Cell N='ShapeKeywords' V='' F='Inh'/><Cell N='DropOnPageScale' V='1' F='Inh'/><Cell N='QuickStyleLineColor' V='100'/><Cell N='QuickStyleFillColor' V='100'/><Cell N='QuickStyleShadowColor' V='100'/><Cell N='QuickStyleFontColor' V='100'/><Cell N='QuickStyleLineMatrix' V='1'/><Cell N='QuickStyleFillMatrix' V='1'/><Cell N='QuickStyleEffectsMatrix' V='1'/><Cell N='QuickStyleFontMatrix' V='1'/><Cell N='QuickStyleType' V='0'/><Cell N='QuickStyleVariation' V='0'/><Cell N='LineWeight' V='Themed' F='Inh'/><Cell N='LineColor' V='Themed' F='Inh'/><Cell N='LinePattern' V='Themed' F='Inh'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='Themed' F='THEMEVAL()'/><Cell N='BeginArrow' V='Themed' F='THEMEVAL()'/><Cell N='EndArrow' V='Themed' F='THEMEVAL()'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='Themed' F='THEMEVAL()'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Themed' F='Inh'/><Cell N='Color' V='Themed' F='Inh'/><Cell N='Style' V='Themed' F='Inh'/><Cell N='Case' V='0' F='Inh'/><Cell N='Pos' V='0' F='Inh'/><Cell N='FontScale' V='1' F='Inh'/><Cell N='Size' V='0.1111111111111111'/><Cell N='DblUnderline' V='0' F='Inh'/><Cell N='Overline' V='0' F='Inh'/><Cell N='Strikethru' V='0' F='Inh'/><Cell N='DoubleStrikethrough' V='0' F='Inh'/><Cell N='Letterspace' V='0' F='Inh'/><Cell N='ColorTrans' V='0' F='Inh'/><Cell N='AsianFont' V='Themed' F='Inh'/><Cell N='ComplexScriptFont' V='Themed' F='Inh'/><Cell N='ComplexScriptSize' V='-1' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/></Row></Section></StyleSheet></StyleSheets><DocumentSheet NameU='TheDoc' IsCustomNameU='1' Name='TheDoc' IsCustomName='1' LineStyle='0' FillStyle='0' TextStyle='0'><Cell N='OutputFormat' V='0'/><Cell N='LockPreview' V='0'/><Cell N='AddMarkup' V='0'/><Cell N='ViewMarkup' V='0'/><Cell N='DocLockReplace' V='0' U='BOOL'/><Cell N='NoCoauth' V='0' U='BOOL'/><Cell N='DocLockDuplicatePage' V='0' U='BOOL'/><Cell N='PreviewQuality' V='0'/><Cell N='PreviewScope' V='0'/><Cell N='DocLangID' V='en-US'/><Section N='User'><Row N='msvNoAutoConnect'><Cell N='Value' V='1'/><Cell N='Prompt' V='' F='No Formula'/></Row></Section></DocumentSheet></VisioDocument>",
@@ -1217,8 +1218,8 @@ l=this.b*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$(),l=d-l,p=this.c*f.
c;c.__class="com.mxgraph.io.vsdx.geometry.Ellipse"})(e.geometry||(e.geometry={}))})(g.vsdx||(g.vsdx={}))})(g.io||(g.io={}))})(f.mxgraph||(f.mxgraph={}))})(com||(com={}));
(function(f){(function(g){(function(g){(function(e){(function(e){var c=function(b){function a(a,c,f,e,g,l,p){a=b.call(this,a,c,f)||this;a.a=e;a.b=g;a.c=l;a.d=p;return a}__extends(a,b);a.prototype.handle=function(a,b){if(null!=this.x&&null!=this.y&&null!=this.a&&null!=this.b&&null!=this.c&&null!=this.d){var d=b.getHeight(),c=b.getWidth(),k=this.x*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$(),e=this.y*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$(),e=d-e,g=this.a*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$(),
l=this.b*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$(),p=this.c,E=this.d,k=100*k/c,e=100*e/d,D=b.getLastX()*c/100,G=b.getLastY()*d/100,T=k*c/100,M=e*d/100,X=d-l,ba=-p,p=Math.sqrt(D*D+G*G)*Math.cos(Math.atan2(G,D)-ba),l=Math.sqrt(D*D+G*G)*Math.sin(Math.atan2(G,D)-ba),ga=Math.sqrt(T*T+M*M)*Math.cos(Math.atan2(M,T)-ba),O=Math.sqrt(T*T+M*M)*Math.sin(Math.atan2(M,T)-ba),na=Math.sqrt(g*g+X*X)*Math.cos(Math.atan2(X,g)-ba),ja=Math.sqrt(g*g+X*X)*Math.sin(Math.atan2(X,g)-ba),Z=((p-ga)*(p+ga)*(O-ja)-
-(ga-na)*(ga+na)*(l-O)+E*E*(l-O)*(O-ja)*(l-ja))/(2*((p-ga)*(O-ja)-(ga-na)*(l-O))),Fb=((p-ga)*(ga-na)*(p-na)/(E*E)+(ga-na)*(l-O)*(l+O)-(p-ga)*(O-ja)*(O+ja))/(2*((ga-na)*(l-O)-(p-ga)*(O-ja))),ea=p-Z,oa=l-Fb,ea=Math.sqrt(ea*ea+oa*oa*E*E),E=ea/E,ba=180*ba/Math.PI,k=Math.round(100*k)/100,e=Math.round(100*e)/100,ea=Math.round(100*ea/c*100)/100,E=Math.round(100*E/d*100)/100,ba=Math.round(100*ba)/100,d=0<(T-D)*(X-G)-(M-G)*(g-D)?"0":"1",c="0";f.mxgraph.io.vsdx.mxVsdxUtils.isInsideTriangle(Z,Fb,p,l,ga,O,na,
-ja)&&this.isReflexAngle(Z,Fb,p,l,ga,O,na,ja)&&(c="1");b.setLastX(k);b.setLastY(e);return'<arc rx="'+(new String(ea)).toString()+'" ry="'+(new String(E)).toString()+'" x="'+(new String(k)).toString()+'" y="'+(new String(e)).toString()+'" x-axis-rotation="'+(new String(ba)).toString()+'" large-arc-flag="'+c+'" sweep-flag="'+d+'"/>'}return""};a.prototype.isReflexAngle=function(a,b,c,f,e,g,l,p){c-=a;f-=b;g-=b;e=l-a;p-=b;b=a=0;c=180*(Math.atan2(f,c)-Math.atan2(b,a))/Math.PI;e=180*(Math.atan2(g,e)-Math.atan2(b,
+(ga-na)*(ga+na)*(l-O)+E*E*(l-O)*(O-ja)*(l-ja))/(2*((p-ga)*(O-ja)-(ga-na)*(l-O))),Eb=((p-ga)*(ga-na)*(p-na)/(E*E)+(ga-na)*(l-O)*(l+O)-(p-ga)*(O-ja)*(O+ja))/(2*((ga-na)*(l-O)-(p-ga)*(O-ja))),ea=p-Z,oa=l-Eb,ea=Math.sqrt(ea*ea+oa*oa*E*E),E=ea/E,ba=180*ba/Math.PI,k=Math.round(100*k)/100,e=Math.round(100*e)/100,ea=Math.round(100*ea/c*100)/100,E=Math.round(100*E/d*100)/100,ba=Math.round(100*ba)/100,d=0<(T-D)*(X-G)-(M-G)*(g-D)?"0":"1",c="0";f.mxgraph.io.vsdx.mxVsdxUtils.isInsideTriangle(Z,Eb,p,l,ga,O,na,
+ja)&&this.isReflexAngle(Z,Eb,p,l,ga,O,na,ja)&&(c="1");b.setLastX(k);b.setLastY(e);return'<arc rx="'+(new String(ea)).toString()+'" ry="'+(new String(E)).toString()+'" x="'+(new String(k)).toString()+'" y="'+(new String(e)).toString()+'" x-axis-rotation="'+(new String(ba)).toString()+'" large-arc-flag="'+c+'" sweep-flag="'+d+'"/>'}return""};a.prototype.isReflexAngle=function(a,b,c,f,e,g,l,p){c-=a;f-=b;g-=b;e=l-a;p-=b;b=a=0;c=180*(Math.atan2(f,c)-Math.atan2(b,a))/Math.PI;e=180*(Math.atan2(g,e)-Math.atan2(b,
a))/Math.PI;a=180*(Math.atan2(p,l)-Math.atan2(b,a))/Math.PI;c=(c-a)%360;e=(e-a)%360;180<c?c-=360:-180>c&&(c+=360);180<e?e-=360:-180>e&&(e+=360);return(0<c&&0>e||0>c&&0<e)&&180<Math.abs(c-e)?!0:!1};return a}(f.mxgraph.io.vsdx.geometry.Row);e.EllipticalArcTo=c;c.__class="com.mxgraph.io.vsdx.geometry.EllipticalArcTo"})(e.geometry||(e.geometry={}))})(g.vsdx||(g.vsdx={}))})(g.io||(g.io={}))})(f.mxgraph||(f.mxgraph={}))})(com||(com={}));
(function(f){(function(g){(function(g){(function(e){(function(e){var c=function(b){function a(a,c,f,e,g){a=b.call(this,a,c,f)||this;a.a=e;a.b=g;return a}__extends(a,b);a.prototype.handle=function(a,b){return""};return a}(f.mxgraph.io.vsdx.geometry.Row);e.InfiniteLine=c;c.__class="com.mxgraph.io.vsdx.geometry.InfiniteLine"})(e.geometry||(e.geometry={}))})(g.vsdx||(g.vsdx={}))})(g.io||(g.io={}))})(f.mxgraph||(f.mxgraph={}))})(com||(com={}));
(function(f){(function(g){(function(g){(function(e){(function(e){var c=function(b){function a(a,c,f){return b.call(this,a,c,f)||this}__extends(a,b);a.prototype.handle=function(a,b){var d=a.x,c=a.y,k=b.getHeight(),e=b.getWidth();null!=this.x&&null!=this.y&&(d=this.x*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$(),c=this.y*f.mxgraph.io.vsdx.mxVsdxUtils.conversionFactor_$LI$());d=Math.round(100*d/e*100)/100;c=Math.round(100*(100-100*c/k))/100;a.x=d;a.y=c;b.setLastX(d);b.setLastY(c);return'<line x="'+
diff --git a/src/main/webapp/js/mxgraph/EditorUi.js b/src/main/webapp/js/mxgraph/EditorUi.js
index 0b4bc3a4..21845405 100644
--- a/src/main/webapp/js/mxgraph/EditorUi.js
+++ b/src/main/webapp/js/mxgraph/EditorUi.js
@@ -1195,43 +1195,43 @@ EditorUi.prototype.installShapePicker = function()
}
};
-// if (this.hoverIcons != null)
-// {
-// // Adds hover icons handling
-// var hoverIconsExecute = this.hoverIcons.execute;
-//
-// this.hoverIcons.execute = function(state, dir, me)
-// {
-// var evt = me.getEvent();
-//
-// if (!mxEvent.isControlDown(evt) && !mxEvent.isShiftDown(evt))
-// {
-// var x = me.getGraphX();
-// var y = me.getGraphY();
-//
-// var temp = graph.getCompositeParent(state.cell);
-// var geo = graph.getCellGeometry(temp);
-//
-// while (temp != null && graph.model.isVertex(temp) && geo != null && geo.relative)
-// {
-// cell = temp;
-// temp = graph.model.getParent(cell)
-// geo = graph.getCellGeometry(temp);
-// }
-//
-// ui.showShapePicker(x, y, temp, mxUtils.bind(this, function(cell)
-// {
-// graph.selectCellsForConnectVertex(this.graph.connectVertex(
-// state.cell, dir, graph.defaultEdgeLength, evt, null, null,
-// cell, cell == null), evt, graph);
-// }));
-// }
-// else
-// {
-// hoverIconsExecute.apply(this, arguments);
-// }
-// };
-// }
+ if (this.hoverIcons != null)
+ {
+ var hoverIconsExecute = this.hoverIcons.execute;
+
+ this.hoverIcons.execute = function(state, dir, me)
+ {
+ var evt = me.getEvent();
+
+ if (!mxEvent.isControlDown(evt) && !mxEvent.isShiftDown(evt))
+ {
+ this.graph.connectVertex(state.cell, dir, this.graph.defaultEdgeLength, evt, null, null, mxUtils.bind(this, function(x, y, execute)
+ {
+ var temp = graph.getCompositeParent(state.cell);
+ var geo = graph.getCellGeometry(temp);
+
+ while (temp != null && graph.model.isVertex(temp) && geo != null && geo.relative)
+ {
+ cell = temp;
+ temp = graph.model.getParent(cell)
+ geo = graph.getCellGeometry(temp);
+ }
+
+ ui.showShapePicker(me.getGraphX(), me.getGraphY(), temp, mxUtils.bind(this, function(cell)
+ {
+ execute(cell);
+ }));
+ }), mxUtils.bind(this, function(result)
+ {
+ this.graph.selectCellsForConnectVertex(result, evt, this);
+ }));
+ }
+ else
+ {
+ hoverIconsExecute.apply(this, arguments);
+ }
+ };
+ }
};
/**
@@ -1248,8 +1248,8 @@ EditorUi.prototype.showShapePicker = function(x, y, cell, callback)
var div = document.createElement('div');
div.className = 'geToolbarContainer geSidebarContainer geSidebar';
- div.style.cssText = 'position:absolute;left:' + (x - 70) + 'px;top:' +
- y + 'px;width:140px;border-radius:10px;padding:4px;text-align:center;' +
+ div.style.cssText = 'position:absolute;left:' + (x - 22) + 'px;top:' +
+ (y - 22) + 'px;width:140px;border-radius:10px;padding:4px;text-align:center;' +
'box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;';
graph.container.appendChild(div);
@@ -1307,6 +1307,9 @@ EditorUi.prototype.showShapePicker = function(x, y, cell, callback)
this.shapePickerCallback = callback;
this.shapePicker = div;
+
+ graph.tooltipHandler.hideTooltip();
+ this.hideCurrentMenu();
}
};
@@ -1323,24 +1326,20 @@ EditorUi.prototype.getCellsForShapePicker = function(cell)
return [(cell != null) ? this.editor.graph.cloneCell(cell) :
createVertex('text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;', 40, 20, 'Text'),
createVertex('whiteSpace=wrap;html=1;'),
- createVertex('rounded=1;whiteSpace=wrap;html=1;'),
createVertex('ellipse;whiteSpace=wrap;html=1;', 120, 80),
- createVertex('shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;'),
createVertex('rhombus;whiteSpace=wrap;html=1;', 80, 80),
createVertex('shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;'),
- createVertex('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;', 120, 80),
+ createVertex('shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;', 120, 60),
+ createVertex('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80),
+ createVertex('shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80),
+ createVertex('shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;'),
+ createVertex('shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;', 120, 80),
+ createVertex('shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;', 80, 100),
createVertex('triangle;whiteSpace=wrap;html=1;', 60, 80),
- createVertex('shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;', 60, 80),
- createVertex('ellipse;shape=cloud;whiteSpace=wrap;html=1;', 120, 80),
createVertex('shape=document;whiteSpace=wrap;html=1;boundedLbl=1;', 120, 80),
- createVertex('shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;', 120, 80),
- createVertex('shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80),
- createVertex('shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;', 120, 60),
createVertex('shape=tape;whiteSpace=wrap;html=1;', 120, 100),
- createVertex('shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;', 80, 100),
- createVertex('shape=card;whiteSpace=wrap;html=1;', 80, 100),
- createVertex('shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;', 120, 80),
- createVertex('shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;', 30, 60)];
+ createVertex('ellipse;shape=cloud;whiteSpace=wrap;html=1;', 120, 80),
+ createVertex('shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;', 60, 80)];
};
/**
diff --git a/src/main/webapp/js/mxgraph/Format.js b/src/main/webapp/js/mxgraph/Format.js
index 6f69c5a9..ec4b46d9 100644
--- a/src/main/webapp/js/mxgraph/Format.js
+++ b/src/main/webapp/js/mxgraph/Format.js
@@ -2179,7 +2179,7 @@ ArrangePanel.prototype.addGeometry = function(container)
autosizeBtn.style.cursor = 'pointer';
autosizeBtn.style.marginTop = '-3px';
autosizeBtn.style.border = '0px';
- autosizeBtn.style.left = '52px';
+ autosizeBtn.style.left = '42px';
mxUtils.setOpacity(autosizeBtn, 50);
mxEvent.addListener(autosizeBtn, 'mouseenter', function()
@@ -3098,7 +3098,7 @@ TextFormatPanel.prototype.addFont = function(container)
input.style.right = '32px';
}
- input.style.width = '46px';
+ input.style.width = '40px';
input.style.height = (mxClient.IS_QUIRKS) ? '21px' : '17px';
stylePanel2.appendChild(input);
@@ -4843,14 +4843,14 @@ StyleFormatPanel.prototype.addStroke = function(container)
if (!mxClient.IS_QUIRKS)
{
input.style.position = 'absolute';
- input.style.right = '32px';
input.style.height = '15px';
- stepper.style.right = '20px';
+ input.style.left = '141px';
+ stepper.style.left = '190px';
altInput.style.position = 'absolute';
- altInput.style.right = '32px';
+ altInput.style.left = '141px';
altInput.style.height = '15px';
- altStepper.style.right = '20px';
+ altStepper.style.left = '190px';
}
else
{
@@ -4995,7 +4995,7 @@ StyleFormatPanel.prototype.addStroke = function(container)
var symbol = this.addArrow(pattern, 9);
symbol.className = 'geIcon';
- symbol.style.width = '84px';
+ symbol.style.width = 'auto';
var altSymbol = this.addArrow(altPattern, 9);
altSymbol.className = 'geIcon';
diff --git a/src/main/webapp/js/mxgraph/Graph.js b/src/main/webapp/js/mxgraph/Graph.js
index ad29fb7a..8ce1d241 100644
--- a/src/main/webapp/js/mxgraph/Graph.js
+++ b/src/main/webapp/js/mxgraph/Graph.js
@@ -2752,15 +2752,7 @@ Graph.prototype.selectCellsForConnectVertex = function(cells, evt, hoverIcons)
/**
* Adds a connection to the given vertex.
*/
-Graph.prototype.getConnectVertexTargetAt = function(source, x, y, fn)
-{
- return this.getCellAt(x, y);
-};
-
-/**
- * Adds a connection to the given vertex.
- */
-Graph.prototype.connectVertex = function(source, direction, length, evt, forceClone, ignoreCellAt, targetCell, forceShift)
+Graph.prototype.connectVertex = function(source, direction, length, evt, forceClone, ignoreCellAt, createTarget, done)
{
// Ignores relative edge labels
if (source.geometry.relative && this.model.isEdge(source.parent))
@@ -2773,9 +2765,9 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
var composite = this.getCompositeParent(source);
var pt = (source.geometry.relative && source.parent.geometry != null) ?
- new mxPoint(source.parent.geometry.width * source.geometry.x,
- source.parent.geometry.height * source.geometry.y) :
- new mxPoint(composite.geometry.x, composite.geometry.y);
+ new mxPoint(source.parent.geometry.width * source.geometry.x,
+ source.parent.geometry.height * source.geometry.y) :
+ new mxPoint(composite.geometry.x, composite.geometry.y);
if (direction == mxConstants.DIRECTION_NORTH)
{
@@ -2819,7 +2811,7 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
// Checks actual end point of edge for target cell
var target = (ignoreCellAt || (mxEvent.isControlDown(evt) && !forceClone)) ?
- null : this.getConnectVertexTargetAt(source, dx + pt.x * s, dy + pt.y * s);
+ null : this.getCellAt(dx + pt.x * s, dy + pt.y * s);
if (this.model.isAncestor(target, source))
{
@@ -2852,7 +2844,7 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
}
}
- var duplicate = ((!mxEvent.isShiftDown(evt) || mxEvent.isControlDown(evt)) && !forceShift) || forceClone;
+ var duplicate = (!mxEvent.isShiftDown(evt) || mxEvent.isControlDown(evt)) || forceClone;
if (duplicate)
{
@@ -2893,109 +2885,127 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
}
var result = [];
+ var swimlane = target != null && this.isSwimlane(target);
+ var realTarget = (!swimlane) ? target : null;
- this.model.beginUpdate();
- try
+ var execute = mxUtils.bind(this, function(targetCell)
{
- var swimlane = target != null && this.isSwimlane(target);
- var realTarget = (!swimlane) ? target : null;
-
- if (realTarget == null && duplicate)
+ this.model.beginUpdate();
+ try
{
- // Handles relative children
- var cellToClone = (targetCell != null) ? targetCell : source;
- var geo = this.getCellGeometry(cellToClone);
+ if (realTarget == null && duplicate)
+ {
+ // Handles relative children
+ var cellToClone = (targetCell != null) ? targetCell : source;
+ var geo = this.getCellGeometry(cellToClone);
+
+ while (geo != null && geo.relative)
+ {
+ cellToClone = this.getModel().getParent(cellToClone);
+ geo = this.getCellGeometry(cellToClone);
+ }
+
+ // Handles composite cells for cloning
+ cellToClone = this.getCompositeParent(cellToClone);
+ realTarget = this.duplicateCells([cellToClone], false)[0];
+
+ var geo = this.getCellGeometry(realTarget);
+
+ if (geo != null)
+ {
+ geo.x = pt.x - geo.width / 2;
+ geo.y = pt.y - geo.height / 2;
+ }
+
+ if (swimlane || targetCell != null)
+ {
+ this.addCells([realTarget], target, null, null, null, true);
+ target = null;
+ }
+ }
- while (geo != null && geo.relative)
+ // Never connects children in stack layouts
+ var layout = null;
+
+ if (this.layoutManager != null)
{
- cellToClone = this.getModel().getParent(cellToClone);
- geo = this.getCellGeometry(cellToClone);
+ layout = this.layoutManager.getLayout(this.model.getParent(source));
}
+
+ var edge = ((mxEvent.isControlDown(evt) && mxEvent.isShiftDown(evt) && duplicate) ||
+ (target == null && layout != null && layout.constructor == mxStackLayout)) ? null :
+ this.insertEdge(this.model.getParent(source), null, '', source, realTarget, this.createCurrentEdgeStyle());
+
+ // Inserts edge before source
+ if (edge != null && this.connectionHandler.insertBeforeSource)
+ {
+ var index = null;
+ var tmp = source;
+
+ while (tmp.parent != null && tmp.geometry != null &&
+ tmp.geometry.relative && tmp.parent != edge.parent)
+ {
+ tmp = this.model.getParent(tmp);
+ }
- // Handles composite cells for cloning
- cellToClone = this.getCompositeParent(cellToClone);
- realTarget = this.duplicateCells([cellToClone], false)[0];
+ if (tmp != null && tmp.parent != null && tmp.parent == edge.parent)
+ {
+ var index = tmp.parent.getIndex(tmp);
+ this.model.add(tmp.parent, edge, index);
+ }
+ }
- var geo = this.getCellGeometry(realTarget);
+ // Special case: Click on west icon puts clone before cell
+ if (target == null && realTarget != null && layout != null && source.parent != null &&
+ layout.constructor == mxStackLayout && direction == mxConstants.DIRECTION_WEST)
+ {
+ var index = source.parent.getIndex(source);
+ this.model.add(source.parent, realTarget, index);
+ }
- if (geo != null)
+ if (edge != null)
{
- geo.x = pt.x - geo.width / 2;
- geo.y = pt.y - geo.height / 2;
+ result.push(edge);
}
- if (swimlane || targetCell != null)
+ if (target == null && realTarget != null)
{
- this.addCells([realTarget], target, null, null, null, true);
- target = null;
+ result.push(realTarget);
}
- }
-
- // Never connects children in stack layouts
- var layout = null;
-
- if (this.layoutManager != null)
- {
- layout = this.layoutManager.getLayout(this.model.getParent(source));
- }
-
- var edge = ((mxEvent.isControlDown(evt) && mxEvent.isShiftDown(evt) && duplicate) ||
- (target == null && layout != null && layout.constructor == mxStackLayout)) ? null :
- this.insertEdge(this.model.getParent(source), null, '', source, realTarget, this.createCurrentEdgeStyle());
-
- // Inserts edge before source
- if (edge != null && this.connectionHandler.insertBeforeSource)
- {
- var index = null;
- var tmp = source;
- while (tmp.parent != null && tmp.geometry != null &&
- tmp.geometry.relative && tmp.parent != edge.parent)
+ if (realTarget == null && edge != null)
{
- tmp = this.model.getParent(tmp);
+ edge.geometry.setTerminalPoint(pt, false);
}
-
- if (tmp != null && tmp.parent != null && tmp.parent == edge.parent)
+
+ if (edge != null)
{
- var index = tmp.parent.getIndex(tmp);
- this.model.add(tmp.parent, edge, index);
+ this.fireEvent(new mxEventObject('cellsInserted', 'cells', [edge]));
}
}
-
- // Special case: Click on west icon puts clone before cell
- if (target == null && realTarget != null && layout != null && source.parent != null &&
- layout.constructor == mxStackLayout && direction == mxConstants.DIRECTION_WEST)
- {
- var index = source.parent.getIndex(source);
- this.model.add(source.parent, realTarget, index);
- }
-
- if (edge != null)
- {
- result.push(edge);
- }
-
- if (target == null && realTarget != null)
+ finally
{
- result.push(realTarget);
+ this.model.endUpdate();
}
- if (realTarget == null && edge != null)
+ if (done != null)
{
- edge.geometry.setTerminalPoint(pt, false);
+ done(result);
}
-
- if (edge != null)
+ else
{
- this.fireEvent(new mxEventObject('cellsInserted', 'cells', [edge]));
+ return result;
}
+ });
+
+ if (createTarget != null && realTarget == null && duplicate)
+ {
+ createTarget(dx + pt.x * s, dy + pt.y * s, execute);
}
- finally
+ else
{
- this.model.endUpdate();
+ return execute();
}
-
- return result;
};
/**
diff --git a/src/main/webapp/js/mxgraph/Shapes.js b/src/main/webapp/js/mxgraph/Shapes.js
index f5a902a1..75d6a77d 100644
--- a/src/main/webapp/js/mxgraph/Shapes.js
+++ b/src/main/webapp/js/mxgraph/Shapes.js
@@ -1220,13 +1220,16 @@
};
mxUtils.extend(HexagonShape, mxHexagon);
HexagonShape.prototype.size = 0.25;
+ HexagonShape.prototype.fixedSize = 20;
HexagonShape.prototype.isRoundable = function()
{
return true;
};
HexagonShape.prototype.redrawPath = function(c, x, y, w, h)
{
- var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
+ var fixed = mxUtils.getValue(this.style, 'fixedSize', '0') != '0';
+ var s = (fixed) ? Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'size', this.fixedSize)))) :
+ w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2;
this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w - s, 0), new mxPoint(w, 0.5 * h), new mxPoint(w - s, h),
new mxPoint(s, h), new mxPoint(0, 0.5 * h)], this.isRounded, arcSize, true);
@@ -1999,7 +2002,8 @@
// Hexagon Perimeter 2 (keep existing one)
mxPerimeter.HexagonPerimeter2 = function (bounds, vertex, next, orthogonal)
{
- var size = HexagonShape.prototype.size;
+ var fixed = mxUtils.getValue(vertex.style, 'fixedSize', '0') != '0';
+ var size = (fixed) ? HexagonShape.prototype.fixedSize : HexagonShape.prototype.size;
if (vertex != null)
{
@@ -2023,14 +2027,14 @@
if (vertical)
{
- var dy = h * Math.max(0, Math.min(1, size));
+ var dy = (fixed) ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size));
points = [new mxPoint(cx, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h - dy),
new mxPoint(cx, y + h), new mxPoint(x, y + h - dy),
new mxPoint(x, y + dy), new mxPoint(cx, y)];
}
else
{
- var dx = w * Math.max(0, Math.min(1, size));
+ var dx = (fixed) ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size));
points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy),
new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h),
new mxPoint(x, cy), new mxPoint(x + dx, y)];
@@ -4054,7 +4058,7 @@
}, false)];
},
'step': createDisplayHandleFunction(StepShape.prototype.size, true, null, true, StepShape.prototype.fixedSize),
- 'hexagon': createDisplayHandleFunction(HexagonShape.prototype.size, true, 0.5, true),
+ 'hexagon': createDisplayHandleFunction(HexagonShape.prototype.size, true, 0.5, true, HexagonShape.prototype.fixedSize),
'curlyBracket': createDisplayHandleFunction(CurlyBracketShape.prototype.size, false),
'display': createDisplayHandleFunction(DisplayShape.prototype.size, false),
'cube': createCubeHandleFunction(1, CubeShape.prototype.size, false),
diff --git a/src/main/webapp/js/mxgraph/Sidebar.js b/src/main/webapp/js/mxgraph/Sidebar.js
index 88917af7..5aab4226 100644
--- a/src/main/webapp/js/mxgraph/Sidebar.js
+++ b/src/main/webapp/js/mxgraph/Sidebar.js
@@ -999,7 +999,7 @@ Sidebar.prototype.addGeneralPalette = function(expand)
this.createVertexTemplateEntry('shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;', 120, 60, '', 'Process', null, null, 'process task'),
this.createVertexTemplateEntry('rhombus;whiteSpace=wrap;html=1;', 80, 80, '', 'Diamond', null, null, 'diamond rhombus if condition decision conditional question test'),
this.createVertexTemplateEntry('shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;', 120, 60, '', 'Parallelogram'),
- this.createVertexTemplateEntry('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;', 120, 80, '', 'Hexagon', null, null, 'hexagon preparation'),
+ this.createVertexTemplateEntry('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80, '', 'Hexagon', null, null, 'hexagon preparation'),
this.createVertexTemplateEntry('triangle;whiteSpace=wrap;html=1;', 60, 80, '', 'Triangle', null, null, 'triangle logic inverter buffer'),
this.createVertexTemplateEntry('shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;', 60, 80, '', 'Cylinder', null, null, 'cylinder data database'),
this.createVertexTemplateEntry('ellipse;shape=cloud;whiteSpace=wrap;html=1;', 120, 80, '', 'Cloud', null, null, 'cloud network'),
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index dbcc27ad..814b7638 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -2149,8 +2149,8 @@ Editor.prototype.setFilename=function(a){this.filename=a};
Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,f){c.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(d,c){var f=a.getSelectionCellsForChanges(c.getProperty("edit").changes,function(a){return!(a instanceof mxChildChange)});if(0<f.length){a.getModel();for(var k=[],b=0;b<
f.length;b++)null!=a.view.getState(f[b])&&k.push(f[b]);a.setSelectionCells(k)}};c.addListener(mxEvent.UNDO,f);c.addListener(mxEvent.REDO,f);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)};
-function Dialog(a,c,f,d,k,l,q,b,e,g,p){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);f+=m;d+=m;var n=f,v=d,t=mxUtils.getDocumentSize();null!=window.innerHeight&&(t.height=window.innerHeight);var x=t.height,y=Math.max(1,Math.round((t.width-f-64)/2)),E=Math.max(1,Math.round((x-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,x-64);0<a.dialogs.length&&(this.zIndex+=
-2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=x+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));t=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=t.x+"px";this.bg.style.top=t.y+"px";y+=t.x;E+=t.y;k&&document.body.appendChild(this.bg);var z=a.createDiv(e?"geTransDialog":
+function Dialog(a,c,f,d,k,l,q,b,e,g,p){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);f+=m;d+=m;var n=f,v=d,u=mxUtils.getDocumentSize();null!=window.innerHeight&&(u.height=window.innerHeight);var x=u.height,y=Math.max(1,Math.round((u.width-f-64)/2)),E=Math.max(1,Math.round((x-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,x-64);0<a.dialogs.length&&(this.zIndex+=
+2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=x+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";y+=u.x;E+=u.y;k&&document.body.appendChild(this.bg);var z=a.createDiv(e?"geTransDialog":
"geDialog");k=this.getPosition(y,E,f,d);y=k.x;E=k.y;z.style.width=f+"px";z.style.height=d+"px";z.style.left=y+"px";z.style.top=E+"px";z.style.zIndex=this.zIndex;z.appendChild(c);document.body.appendChild(z);!b&&c.clientHeight>z.clientHeight-64&&(c.style.overflowY="auto");if(l&&(l=document.createElement("img"),l.setAttribute("src",Dialog.prototype.closeImage),l.setAttribute("title",mxResources.get("close")),l.className="geDialogClose",l.style.top=E+14+"px",l.style.left=y+f+38-m+"px",l.style.zIndex=
this.zIndex,mxEvent.addListener(l,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(l),this.dialogImg=l,!p)){var C=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){C=!0}),null,mxUtils.bind(this,function(b){C&&(a.hideDialog(!0),C=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var e=g();null!=e&&(n=f=e.w,v=d=e.h)}e=mxUtils.getDocumentSize();x=e.height;this.bg.style.height=x+"px";y=Math.max(1,Math.round((e.width-f-64)/2));E=Math.max(1,
Math.round((x-d-a.footerHeight)/3));f=null!=document.body?Math.min(n,document.body.scrollWidth-64):n;d=Math.min(v,x-64);e=this.getPosition(y,E,f,d);y=e.x;E=e.y;z.style.left=y+"px";z.style.top=E+"px";z.style.width=f+"px";z.style.height=d+"px";!b&&c.clientHeight>z.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=E+14+"px",this.dialogImg.style.left=y+f+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=
@@ -2180,25 +2180,25 @@ l,q=document.createElement("table");q.style.width="100%";q.style.height="100%";v
l=document.createElement("td");mxUtils.write(l,mxResources.get("background")+":");k.appendChild(l);l=document.createElement("td");l.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="18px";g.style.height="18px";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";var p=d.background;c();mxEvent.addListener(g,"click",function(b){a.pickColor(p||"none",function(a){p=
a;c()});mxEvent.consume(b)});l.appendChild(g);mxUtils.write(l,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=d.getGridSize();l.appendChild(m);mxEvent.addListener(m,"change",function(){var a=parseInt(m.value);m.value=Math.max(1,isNaN(a)?d.getGridSize():a)});k.appendChild(l);b.appendChild(k);k=document.createElement("tr");l=document.createElement("td");mxUtils.write(l,
mxResources.get("image")+":");k.appendChild(l);l=document.createElement("td");var n=document.createElement("a");n.style.textDecoration="underline";n.style.cursor="pointer";n.style.color="#a0a0a0";var v=d.backgroundImage;mxEvent.addListener(n,"click",function(b){a.showBackgroundImageDialog(function(a,b){b||(v=a,f())},v);mxEvent.consume(b)});f();l.appendChild(n);k.appendChild(l);b.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.paddingTop="16px";l.setAttribute("align",
-"right");var t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});t.className="geBtn";a.editor.cancelFirst&&l.appendChild(t);var x=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(m.value);isNaN(b)||d.gridSize===b||d.setGridSize(b);b=new ChangePageSetup(a,p,v,e.get());b.ignoreColor=d.background==p;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=v?v.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==
-b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||d.model.execute(b)});x.className="geBtn gePrimaryBtn";l.appendChild(x);a.editor.cancelFirst||l.appendChild(t);k.appendChild(l);b.appendChild(k);q.appendChild(b);this.container=q};
-PageSetupDialog.addPageFormatPanel=function(a,c,f,d){function k(a,d,c){if(c||m!=document.activeElement&&n!=document.activeElement){a=!1;for(d=0;d<t.length;d++)c=t[d],z?"custom"==c.key&&(b.value=c.key,z=!1):null!=c.format&&("a4"==c.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==c.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==c.format.width&&
+"right");var u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&l.appendChild(u);var x=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(m.value);isNaN(b)||d.gridSize===b||d.setGridSize(b);b=new ChangePageSetup(a,p,v,e.get());b.ignoreColor=d.background==p;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=v?v.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==
+b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||d.model.execute(b)});x.className="geBtn gePrimaryBtn";l.appendChild(x);a.editor.cancelFirst||l.appendChild(u);k.appendChild(l);b.appendChild(k);q.appendChild(b);this.container=q};
+PageSetupDialog.addPageFormatPanel=function(a,c,f,d){function k(a,d,c){if(c||m!=document.activeElement&&n!=document.activeElement){a=!1;for(d=0;d<u.length;d++)c=u[d],z?"custom"==c.key&&(b.value=c.key,z=!1):null!=c.format&&("a4"==c.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==c.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==c.format.width&&
f.height==c.format.height?(b.value=c.key,l.setAttribute("checked","checked"),l.defaultChecked=!0,l.checked=!0,q.removeAttribute("checked"),q.defaultChecked=!1,q.checked=!1,a=!0):f.width==c.format.height&&f.height==c.format.width&&(b.value=c.key,l.removeAttribute("checked"),l.defaultChecked=!1,l.checked=!1,q.setAttribute("checked","checked"),q.defaultChecked=!0,a=q.checked=!0));a?(e.style.display="",p.style.display="none"):(m.value=f.width/100,n.value=f.height/100,l.setAttribute("checked","checked"),
b.value="custom",e.style.display="none",p.style.display="")}}c="format-"+c;var l=document.createElement("input");l.setAttribute("name",c);l.setAttribute("type","radio");l.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",c);q.setAttribute("type","radio");q.setAttribute("value","landscape");var b=document.createElement("select");b.style.marginBottom="8px";b.style.width="202px";var e=document.createElement("div");e.style.marginLeft="4px";e.style.width="210px";
e.style.height="24px";l.style.marginRight="6px";e.appendChild(l);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));e.appendChild(c);q.style.marginLeft="10px";q.style.marginRight="6px";e.appendChild(q);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));e.appendChild(g);var p=document.createElement("div");p.style.marginLeft="4px";p.style.width="210px";p.style.height="24px";var m=document.createElement("input");
-m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";p.appendChild(n);mxUtils.write(p," in");e.style.display="none";p.style.display="none";for(var v={},t=PageSetupDialog.getFormats(),x=0;x<t.length;x++){var y=t[x];v[y.key]=y;var E=document.createElement("option");E.setAttribute("value",y.key);mxUtils.write(E,y.title);b.appendChild(E)}var z=!1;k();a.appendChild(b);mxUtils.br(a);
+m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";p.appendChild(n);mxUtils.write(p," in");e.style.display="none";p.style.display="none";for(var v={},u=PageSetupDialog.getFormats(),x=0;x<u.length;x++){var y=u[x];v[y.key]=y;var E=document.createElement("option");E.setAttribute("value",y.key);mxUtils.write(E,y.title);b.appendChild(E)}var z=!1;k();a.appendChild(b);mxUtils.br(a);
a.appendChild(e);a.appendChild(p);var C=f,A=function(a,c){var g=v[b.value];null!=g.format?(m.value=g.format.width/100,n.value=g.format.height/100,p.style.display="none",e.style.display=""):(e.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=f.width/100;g=parseFloat(n.value);if(isNaN(g)||0>=g)n.value=f.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),Math.floor(100*parseFloat(n.value)));"custom"!=b.value&&q.checked&&(g=new mxRectangle(0,0,
g.height,g.width));c&&z||g.width==C.width&&g.height==C.height||(C=g,null!=d&&d(C))};mxEvent.addListener(c,"click",function(a){l.checked=!0;A(a);mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){q.checked=!0;A(a);mxEvent.consume(a)});mxEvent.addListener(m,"blur",A);mxEvent.addListener(m,"click",A);mxEvent.addListener(n,"blur",A);mxEvent.addListener(n,"click",A);mxEvent.addListener(q,"change",A);mxEvent.addListener(l,"change",A);mxEvent.addListener(b,"change",function(a){z="custom"==b.value;
A(a,!0)});A();return{set:function(a){f=a;k(null,null,!0)},get:function(){return C},widthInput:m,heightInput:n}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,1600,900)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1920,1200)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1600,1200)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(a,c,f,d,k,l,q,b,e,g,p,m){e=null!=e?e:!0;var n,v,t=document.createElement("table"),x=document.createElement("tbody");t.style.marginTop="8px";n=document.createElement("tr");v=document.createElement("td");v.style.whiteSpace="nowrap";v.style.fontSize="10pt";v.style.width=p?"80px":"120px";mxUtils.write(v,(k||mxResources.get("filename"))+":");n.appendChild(v);var y=document.createElement("input");y.setAttribute("value",c||"");y.style.marginLeft="4px";y.style.width=null!=m?m+
-"px":"180px";var E=mxUtils.button(f,function(){if(null==l||l(y.value))e&&a.hideDialog(),d(y.value)});E.className="geBtn gePrimaryBtn";this.init=function(){if(null!=k||null==q)if(y.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?y.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=t.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});
+var FilenameDialog=function(a,c,f,d,k,l,q,b,e,g,p,m){e=null!=e?e:!0;var n,v,u=document.createElement("table"),x=document.createElement("tbody");u.style.marginTop="8px";n=document.createElement("tr");v=document.createElement("td");v.style.whiteSpace="nowrap";v.style.fontSize="10pt";v.style.width=p?"80px":"120px";mxUtils.write(v,(k||mxResources.get("filename"))+":");n.appendChild(v);var y=document.createElement("input");y.setAttribute("value",c||"");y.style.marginLeft="4px";y.style.width=null!=m?m+
+"px":"180px";var E=mxUtils.button(f,function(){if(null==l||l(y.value))e&&a.hideDialog(),d(y.value)});E.className="geBtn gePrimaryBtn";this.init=function(){if(null!=k||null==q)if(y.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?y.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=u.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});
mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=y,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(y.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),E.click());a.stopPropagation();a.preventDefault()}))}}};v=document.createElement("td");
v.style.whiteSpace="nowrap";v.appendChild(y);n.appendChild(v);if(null!=k||null==q)x.appendChild(n),null!=p&&(null!=a.editor.diagramFileTypes&&(n=FilenameDialog.createFileTypes(a,y,a.editor.diagramFileTypes),n.style.marginLeft="6px",n.style.width="74px",v.appendChild(n),y.style.width=null!=m?m-40+"px":"140px"),v.appendChild(FilenameDialog.createTypeHint(a,y,p)));null!=q&&(n=document.createElement("tr"),v=document.createElement("td"),v.colSpan=2,v.appendChild(q),n.appendChild(v),x.appendChild(n));n=
document.createElement("tr");v=document.createElement("td");v.colSpan=2;v.style.paddingTop="20px";v.style.whiteSpace="nowrap";v.setAttribute("align","right");p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});p.className="geBtn";a.editor.cancelFirst&&v.appendChild(p);null!=b&&(m=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(b)}),m.className="geBtn",v.appendChild(m));mxEvent.addListener(y,"keypress",function(a){13==a.keyCode&&E.click()});
-v.appendChild(E);a.editor.cancelFirst||v.appendChild(p);n.appendChild(v);x.appendChild(n);t.appendChild(x);this.container=t};FilenameDialog.filenameHelpLink=null;
+v.appendChild(E);a.editor.cancelFirst||v.appendChild(p);n.appendChild(v);x.appendChild(n);u.appendChild(x);this.container=u};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,c,f){var d=document.createElement("img");d.style.cssText="vertical-align:top;height:16px;width:16px;margin-left:4px;background-repeat:no-repeat;background-position:center bottom;cursor:pointer;";mxUtils.setOpacity(d,70);var k=function(){d.setAttribute("src",Editor.helpImage);d.setAttribute("title",mxResources.get("help"));for(var a=0;a<f.length;a++)if(0<f[a].ext.length&&c.value.toLowerCase().substring(c.value.length-f[a].ext.length-1)=="."+f[a].ext){d.setAttribute("src",
mxClient.imageBasePath+"/warning.png");d.setAttribute("title",mxResources.get(f[a].title));break}};mxEvent.addListener(c,"keyup",k);mxEvent.addListener(c,"change",k);mxEvent.addListener(d,"click",function(c){var f=d.getAttribute("title");d.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=f&&a.showError(null,f,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);
mxEvent.consume(c)});k();return d};
@@ -2211,9 +2211,9 @@ null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackground
d="url("+this.gridImage+")";var f=e=0;null!=a.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),e=1+f.x,f=1+f.y);c=-Math.round(c-mxUtils.mod(this.translate.x*this.scale-e,c))+"px "+-Math.round(c-mxUtils.mod(this.translate.y*this.scale-f,c))+"px"}e=a.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=c,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor=
b,a.container.className="geDiagramContainer geDiagramBackdrop",e.style.backgroundImage="none",e.style.backgroundColor=""):(a.container.className="geDiagramContainer",e.style.backgroundPosition=c,e.style.backgroundColor=b,e.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var e=this.gridSteps*b,d=[],c=1;c<this.gridSteps;c++){var f=c*b;d.push("M 0 "+f+" L "+e+" "+f+" M "+f+" 0 L "+f+" "+e)}return'<svg width="'+
e+'" height="'+e+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+e+'" height="'+e+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+e+" 0 L 0 0 0 "+e+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(d,b){a.apply(this,arguments);if(null!=this.shiftPreview1){var e=
-this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+d,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+b,c))+"px";e.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,e){var d=this.view.scale,c=this.view.translate,f=this.pageFormat,n=d*this.pageScale,l=this.view.getBackgroundPageBounds();b=l.width;e=l.height;var t=
-new mxRectangle(d*c.x,d*c.y,f.width*n,f.height*n),k=(a=a&&Math.min(t.width,t.height)>this.minPageBreakDist)?Math.ceil(e/t.height)-1:0,y=a?Math.ceil(b/t.width)-1:0,q=l.x+b,z=l.y+e;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<y&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?k:y,e=0;e<=b;e++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(l.x),Math.round(l.y+(e+1)*t.height)),
-new mxPoint(Math.round(q),Math.round(l.y+(e+1)*t.height))]:[new mxPoint(Math.round(l.x+(e+1)*t.width),Math.round(l.y)),new mxPoint(Math.round(l.x+(e+1)*t.width),Math.round(z))];null!=a[e]?(a[e].points=d,a[e].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[e]=d)}for(e=b;e<a.length;e++)a[e].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
+this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+d,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+b,c))+"px";e.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,e){var d=this.view.scale,c=this.view.translate,f=this.pageFormat,n=d*this.pageScale,l=this.view.getBackgroundPageBounds();b=l.width;e=l.height;var u=
+new mxRectangle(d*c.x,d*c.y,f.width*n,f.height*n),k=(a=a&&Math.min(u.width,u.height)>this.minPageBreakDist)?Math.ceil(e/u.height)-1:0,y=a?Math.ceil(b/u.width)-1:0,q=l.x+b,z=l.y+e;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<y&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?k:y,e=0;e<=b;e++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(l.x),Math.round(l.y+(e+1)*u.height)),
+new mxPoint(Math.round(q),Math.round(l.y+(e+1)*u.height))]:[new mxPoint(Math.round(l.x+(e+1)*u.width),Math.round(l.y)),new mxPoint(Math.round(l.x+(e+1)*u.width),Math.round(z))];null!=a[e]?(a[e].points=d,a[e].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[e]=d)}for(e=b;e<a.length;e++)a[e].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,b,e){for(var d=0;d<b.length;d++){if(this.graph.isTableCell(b[d])||this.graph.isTableRow(b[d]))return!1;if(this.graph.getModel().isVertex(b[d])){var f=this.graph.getCellGeometry(b[d]);if(null!=f&&f.relative)return!1}}return c.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=f.apply(this,arguments);
a.intersects=mxUtils.bind(this,function(b,e){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,e=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,c=this.graph.pageScale,
f=d.width*c,d=d.height*c,c=Math.floor(Math.min(0,b)/f),n=Math.floor(Math.min(0,e)/d);return new mxRectangle(this.scale*(this.translate.x+c*f),this.scale*(this.translate.y+n*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/f)-c)*f,this.scale*(Math.ceil(Math.max(1,e+a.height/this.scale)/d)-n)*d)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&
@@ -2226,16 +2226,16 @@ k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer
!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(c=d.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=d.graphHandler){var l=d.graphHandler.start;d.graphHandler.start=function(){null!=y.hoverIcons&&y.hoverIcons.reset();l.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-
b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var q=!1,b=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,e){return q||b.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||d.isEditing()?mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(q=!0,this.hoverIcons.reset(),
d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";q=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var e=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return e.apply(this,arguments)||q||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&
-(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var g=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return g.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var p=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return q||p.apply(this,arguments)};var m=!1,n=null,v=null,t=null,x=
-mxUtils.bind(this,function(){if(null!=this.toolbar&&m!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==t)this.toolbar.createTextToolbar();else{for(var c=0;c<t.length;c++)this.toolbar.container.appendChild(t[c]);this.toolbar.fontMenu=n;this.toolbar.sizeMenu=v}m=d.cellEditor.isContentEditing();
-n=a;v=e;t=b}}),y=this,E=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){E.apply(this,arguments);x();if(d.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){for(var b=d.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;if(null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=y.toolbar)){var e=b.fontFamily;"'"==e.charAt(0)&&(e=e.substring(1));"'"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1));y.toolbar.setFontName(e);
+(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var g=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return g.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var p=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return q||p.apply(this,arguments)};var m=!1,n=null,v=null,u=null,x=
+mxUtils.bind(this,function(){if(null!=this.toolbar&&m!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==u)this.toolbar.createTextToolbar();else{for(var c=0;c<u.length;c++)this.toolbar.container.appendChild(u[c]);this.toolbar.fontMenu=n;this.toolbar.sizeMenu=v}m=d.cellEditor.isContentEditing();
+n=a;v=e;u=b}}),y=this,E=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){E.apply(this,arguments);x();if(d.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){for(var b=d.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;if(null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=y.toolbar)){var e=b.fontFamily;"'"==e.charAt(0)&&(e=e.substring(1));"'"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1));y.toolbar.setFontName(e);
y.toolbar.setFontSize(parseInt(b.fontSize))}a=!1},0))};mxEvent.addListener(d.cellEditor.textarea,"input",b);mxEvent.addListener(d.cellEditor.textarea,"touchend",b);mxEvent.addListener(d.cellEditor.textarea,"mouseup",b);mxEvent.addListener(d.cellEditor.textarea,"keyup",b);b()}};var z=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,b){try{z.apply(this,arguments),x()}catch(B){y.handleError(B)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===
-window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(u){}var C=d.fireMouseEvent;d.fireMouseEvent=function(a,b,e){a==mxEvent.MOUSE_DOWN&&this.container.focus();C.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,e){this.menus.createPopupMenu(a,b,e)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=
+window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(t){}var C=d.fireMouseEvent;d.fireMouseEvent=function(a,b,e){a==mxEvent.MOUSE_DOWN&&this.container.focus();C.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,e){this.menus.createPopupMenu(a,b,e)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=
function(){return keyHandler};var A="rounded shadow glass dashed dashPattern labelBackgroundColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),D="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" ");this.setDefaultStyle=function(a){try{var b=
-d.view.getState(a);if(null!=b){var e=a.clone();e.style="";var c=d.getCellStyle(e);a=[];var e=[],g;for(g in b.style)c[g]!=b.style[g]&&(a.push(b.style[g]),e.push(g));for(var f=d.getModel().getStyle(b.cell),p=null!=f?f.split(";"):[],f=0;f<p.length;f++){var u=p[f],n=u.indexOf("=");if(0<=n){g=u.substring(0,n);var m=u.substring(n+1);null!=c[g]&&"none"==m&&(a.push(m),e.push(g))}}d.getModel().isEdge(b.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",
+d.view.getState(a);if(null!=b){var e=a.clone();e.style="";var c=d.getCellStyle(e);a=[];var e=[],g;for(g in b.style)c[g]!=b.style[g]&&(a.push(b.style[g]),e.push(g));for(var f=d.getModel().getStyle(b.cell),p=null!=f?f.split(";"):[],f=0;f<p.length;f++){var n=p[f],t=n.indexOf("=");if(0<=t){g=n.substring(0,t);var m=n.substring(t+1);null!=c[g]&&"none"==m&&(a.push(m),e.push(g))}}d.getModel().isEdge(b.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",
e,"values",a,"cells",[b.cell]))}}catch(Y){this.handleError(Y)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var G=["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),I=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),
-["strokeColor","strokeWidth"],["fillColor","gradientColor"],G,["opacity"],["align"],["html"]];for(a=0;a<I.length;a++)for(c=0;c<I[a].length;c++)A.push(I[a][c]);for(a=0;a<D.length;a++)0>mxUtils.indexOf(A,D[a])&&A.push(D[a]);var J=function(a,b,e){e=null!=e?e:d.getModel();e.beginUpdate();try{for(var c=0;c<a.length;c++){var g=a[c],f;if(b)f=["fontSize","fontFamily","fontColor"];else{var p=e.getStyle(g),u=null!=p?p.split(";"):[];f=A.slice();for(var n=0;n<u.length;n++){var m=u[n],B=m.indexOf("=");if(0<=B){var t=
-m.substring(0,B),K=mxUtils.indexOf(f,t);0<=K&&f.splice(K,1);for(var l=0;l<I.length;l++){var k=I[l];if(0<=mxUtils.indexOf(k,t))for(var v=0;v<k.length;v++){var x=mxUtils.indexOf(f,k[v]);0<=x&&f.splice(x,1)}}}}}for(var y=e.isEdge(g),q=y?d.currentEdgeStyle:d.currentVertexStyle,E=e.getStyle(g),n=0;n<f.length;n++){var t=f[n],z=q[t];null==z||"shape"==t&&!y||y&&!(0>mxUtils.indexOf(D,t))||(E=mxUtils.setStyle(E,t,z))}e.setStyle(g,E)}}finally{e.endUpdate()}};d.addListener("cellsInserted",function(a,b){J(b.getProperty("cells"))});
+["strokeColor","strokeWidth"],["fillColor","gradientColor"],G,["opacity"],["align"],["html"]];for(a=0;a<I.length;a++)for(c=0;c<I[a].length;c++)A.push(I[a][c]);for(a=0;a<D.length;a++)0>mxUtils.indexOf(A,D[a])&&A.push(D[a]);var J=function(a,b,e){e=null!=e?e:d.getModel();e.beginUpdate();try{for(var c=0;c<a.length;c++){var g=a[c],f;if(b)f=["fontSize","fontFamily","fontColor"];else{var p=e.getStyle(g),n=null!=p?p.split(";"):[];f=A.slice();for(var t=0;t<n.length;t++){var m=n[t],B=m.indexOf("=");if(0<=B){var u=
+m.substring(0,B),K=mxUtils.indexOf(f,u);0<=K&&f.splice(K,1);for(var l=0;l<I.length;l++){var k=I[l];if(0<=mxUtils.indexOf(k,u))for(var v=0;v<k.length;v++){var x=mxUtils.indexOf(f,k[v]);0<=x&&f.splice(x,1)}}}}}for(var y=e.isEdge(g),q=y?d.currentEdgeStyle:d.currentVertexStyle,E=e.getStyle(g),t=0;t<f.length;t++){var u=f[t],z=q[u];null==z||"shape"==u&&!y||y&&!(0>mxUtils.indexOf(D,u))||(E=mxUtils.setStyle(E,u,z))}e.setStyle(g,E)}}finally{e.endUpdate()}};d.addListener("cellsInserted",function(a,b){J(b.getProperty("cells"))});
d.addListener("textInserted",function(a,b){J(b.getProperty("cells"),!0)});this.insertHandler=J;d.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var e=[b.getProperty("cell")];b.getProperty("terminalInserted")&&e.push(b.getProperty("terminal"));J(e)});this.addListener("styleChanged",mxUtils.bind(this,function(a,b){var e=b.getProperty("cells"),c=!1,g=!1;if(0<e.length)for(var f=0;f<e.length&&(c=d.getModel().isVertex(e[f])||c,!(g=d.getModel().isEdge(e[f])||g)||!c);f++);else g=c=!0;for(var e=
b.getProperty("keys"),p=b.getProperty("values"),f=0;f<e.length;f++){var n=0<=mxUtils.indexOf(G,e[f]);if("strokeColor"!=e[f]||null!=p[f]&&"none"!=p[f])if(0<=mxUtils.indexOf(D,e[f]))g||0<=mxUtils.indexOf(F,e[f])?null==p[f]?delete d.currentEdgeStyle[e[f]]:d.currentEdgeStyle[e[f]]=p[f]:c&&0<=mxUtils.indexOf(A,e[f])&&(null==p[f]?delete d.currentVertexStyle[e[f]]:d.currentVertexStyle[e[f]]=p[f]);else if(0<=mxUtils.indexOf(A,e[f])){if(c||n)null==p[f]?delete d.currentVertexStyle[e[f]]:d.currentVertexStyle[e[f]]=
p[f];if(g||n||0<=mxUtils.indexOf(F,e[f]))null==p[f]?delete d.currentEdgeStyle[e[f]]:d.currentEdgeStyle[e[f]]=p[f]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":
@@ -2250,15 +2250,16 @@ EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;Edi
EditorUi.prototype.init=function(){var a=this.editor.graph;if(!a.standalone){"0"!=urlParams["shape-picker"]&&this.installShapePicker();mxEvent.addListener(a.container,"scroll",mxUtils.bind(this,function(){a.tooltipHandler.hide();null!=a.connectionHandler&&null!=a.connectionHandler.constraintHandler&&a.connectionHandler.constraintHandler.reset()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){a.tooltipHandler.hide();var d=a.getRubberband();null!=d&&d.cancel()}));mxEvent.addListener(a.container,
"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
arguments);f.updateActionStates()};a.editLink=f.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};
-EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,f){"mouseDown"==f.getProperty("eventName")&&c.hideShapePicker()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));var f=
-a.dblClick;a.dblClick=function(a,k){if(this.isEnabled())if(null!=k||null==c.sidebar||mxEvent.isShiftDown(a))f.apply(this,arguments);else{var d=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));c.showShapePicker(d.x,d.y)}}};
-EditorUi.prototype.showShapePicker=function(a,c,f,d){f=this.getCellsForShapePicker(f);if(null!=f&&0<f.length){var k=this,l=this.editor.graph,q=document.createElement("div");q.className="geToolbarContainer geSidebarContainer geSidebar";q.style.cssText="position:absolute;left:"+(a-70)+"px;top:"+c+"px;width:140px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;";l.container.appendChild(q);for(var b=mxUtils.bind(this,function(b){var e=document.createElement("a");
+EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){"mouseDown"==d.getProperty("eventName")&&c.hideShapePicker()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));var f=
+a.dblClick;a.dblClick=function(a,d){if(this.isEnabled())if(null!=d||null==c.sidebar||mxEvent.isShiftDown(a))f.apply(this,arguments);else{var l=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));c.showShapePicker(l.x,l.y)}};if(null!=this.hoverIcons){var d=this.hoverIcons.execute;this.hoverIcons.execute=function(f,l,q){var b=q.getEvent();mxEvent.isControlDown(b)||mxEvent.isShiftDown(b)?d.apply(this,arguments):this.graph.connectVertex(f.cell,l,this.graph.defaultEdgeLength,
+b,null,null,mxUtils.bind(this,function(b,d,p){b=a.getCompositeParent(f.cell);for(d=a.getCellGeometry(b);null!=b&&a.model.isVertex(b)&&null!=d&&d.relative;)cell=b,b=a.model.getParent(cell),d=a.getCellGeometry(b);c.showShapePicker(q.getGraphX(),q.getGraphY(),b,mxUtils.bind(this,function(a){p(a)}))}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,b,this)}))}}};
+EditorUi.prototype.showShapePicker=function(a,c,f,d){f=this.getCellsForShapePicker(f);if(null!=f&&0<f.length){var k=this,l=this.editor.graph,q=document.createElement("div");q.className="geToolbarContainer geSidebarContainer geSidebar";q.style.cssText="position:absolute;left:"+(a-22)+"px;top:"+(c-22)+"px;width:140px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;";l.container.appendChild(q);for(var b=mxUtils.bind(this,function(b){var e=document.createElement("a");
e.className="geItem";e.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";q.appendChild(e);k.insertHandler([b],""!=b.value,this.sidebar.graph.model);this.sidebar.createThumb([b],25,25,e,null,!0,!1,b.geometry.width,b.geometry.height);mxEvent.addListener(e,"click",function(){b.geometry.x=l.snap(Math.round(a/l.view.scale)-l.view.translate.x-b.geometry.width/2);b.geometry.y=l.snap(Math.round(c/l.view.scale)-
-l.view.translate.y-b.geometry.height/2);l.model.beginUpdate();try{null!=d?d(b):l.addCell(b)}finally{l.model.endUpdate()}null==d&&(l.setSelectionCell(b),l.scrollCellToVisible(l.getSelectionCell()),l.startEditingAtCell(b));k.hideShapePicker()})}),e=0;e<f.length;e++)b(f[e]);this.shapePickerCallback=d;this.shapePicker=q}};
-EditorUi.prototype.getCellsForShapePicker=function(a){var c=mxUtils.bind(this,function(a,d,c,l){return this.editor.graph.createVertex(null,null,l||"",0,0,d||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("rounded=1;whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("rhombus;whiteSpace=wrap;html=1;",
-80,80),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;"),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;",120,80),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",
-120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",80,100),c("shape=card;whiteSpace=wrap;html=1;",80,100),c("shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;",120,80),c("shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;",
-30,60)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9!=a.which||!c.isEnabled()||mxEvent.isAltDown(a)||c.isEditing()&&mxEvent.isShiftDown(a)||(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))};
+l.view.translate.y-b.geometry.height/2);l.model.beginUpdate();try{null!=d?d(b):l.addCell(b)}finally{l.model.endUpdate()}null==d&&(l.setSelectionCell(b),l.scrollCellToVisible(l.getSelectionCell()),l.startEditingAtCell(b));k.hideShapePicker()})}),e=0;e<f.length;e++)b(f[e]);this.shapePickerCallback=d;this.shapePicker=q;l.tooltipHandler.hideTooltip();this.hideCurrentMenu()}};
+EditorUi.prototype.getCellsForShapePicker=function(a){var c=mxUtils.bind(this,function(a,d,c,l){return this.editor.graph.createVertex(null,null,l||"",0,0,d||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;",120,80),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;"),
+c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",120,80),c("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",
+80,100),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80)]};
+EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9!=a.which||!c.isEnabled()||mxEvent.isAltDown(a)||c.isEditing()&&mxEvent.isShiftDown(a)||(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))};
EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,null!=c.textarea&&(c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a))))};
EditorUi.prototype.isImmediateEditingEvent=function(a){return!0};
EditorUi.prototype.getCssClassForMarker=function(a,c,f,d){return"flexArrow"==c?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==f||"halfCircle"==f?"geSprite geSvgSprite geSprite-"+f+("end"==a?" geFlipSprite":""):f==mxConstants.ARROW_CLASSIC?"1"==d?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==d?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?
@@ -2267,13 +2268,13 @@ f==mxConstants.ARROW_DIAMOND_THIN?"1"==d?"geSprite geSprite-"+a+"thindiamond":"g
f?"geSprite geSprite-"+a+"eronetoone":"ERmany"==f?"geSprite geSprite-"+a+"ermany":"ERoneToMany"==f?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==f?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==f?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,c=this.actions.get("paste"),f=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(d){var c=null;if(d.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var c=c||d.getSelectionCells(),c=d.getExportableCells(d.model.getTopmostCells(c)),b={},e=d.createCellLookup(c),g=d.cloneCells(c,null,b),f=new mxGraphModel,m=f.getChildAt(f.getRoot(),
-0),n=0;n<g.length;n++){f.add(m,g[n]);var l=d.view.getState(c[n]);if(null!=l){var t=d.getCellGeometry(g[n]);null!=t&&t.relative&&!f.isEdge(c[n])&&null==e[mxObjectIdentity.get(f.getParent(c[n]))]&&(t.offset=null,t.relative=!1,t.x=l.x/l.view.scale-l.view.translate.x,t.y=l.y/l.view.scale-l.view.translate.y)}}d.updateCustomLinks(d.createCellMapping(b,e),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}a.updatePasteActionStates();return c};var f=mxClipboard.paste;mxClipboard.paste=function(d){var c=
+0),n=0;n<g.length;n++){f.add(m,g[n]);var l=d.view.getState(c[n]);if(null!=l){var u=d.getCellGeometry(g[n]);null!=u&&u.relative&&!f.isEdge(c[n])&&null==e[mxObjectIdentity.get(f.getParent(c[n]))]&&(u.offset=null,u.relative=!1,u.x=l.x/l.view.scale-l.view.translate.x,u.y=l.y/l.view.scale-l.view.translate.y)}}d.updateCustomLinks(d.createCellMapping(b,e),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}a.updatePasteActionStates();return c};var f=mxClipboard.paste;mxClipboard.paste=function(d){var c=
null;d.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):c=f.apply(this,arguments);a.updatePasteActionStates();return c};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};var k=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(d,c){k.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,e){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var c=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(b,e,d,c){if(null!=a.container&&!a.isViewer()){d=null!=d?d:0;c=null!=c?c:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),f=mxUtils.hasScrollbars(a.container),p=a.view.translate,n=a.view.scale,m=mxRectangle.fromRectangle(g);
-m.x=m.x/n-p.x;m.y=m.y/n-p.y;m.width/=n;m.height/=n;var p=a.container.scrollTop,u=a.container.scrollLeft,t=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)t+=3;var B=a.container.offsetWidth-t,t=a.container.offsetHeight-t;b=b?Math.max(.3,Math.min(e||1,B/m.width)):n;e=(B-b*m.width)/2/b;var L=0==this.lightboxVerticalDivider?0:(t-b*m.height)/this.lightboxVerticalDivider/b;f&&(e=Math.max(e,0),L=Math.max(L,0));if(f||g.width<B||g.height<t)a.view.scaleAndTranslate(b,
-Math.floor(e-m.x),Math.floor(L-m.y)),a.container.scrollTop=p*b/n,a.container.scrollLeft=u*b/n;else if(0!=d||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",
+m.x=m.x/n-p.x;m.y=m.y/n-p.y;m.width/=n;m.height/=n;var p=a.container.scrollTop,t=a.container.scrollLeft,u=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)u+=3;var B=a.container.offsetWidth-u,u=a.container.offsetHeight-u;b=b?Math.max(.3,Math.min(e||1,B/m.width)):n;e=(B-b*m.width)/2/b;var L=0==this.lightboxVerticalDivider?0:(u-b*m.height)/this.lightboxVerticalDivider/b;f&&(e=Math.max(e,0),L=Math.max(L,0));if(f||g.width<B||g.height<u)a.view.scaleAndTranslate(b,
+Math.floor(e-m.x),Math.floor(L-m.y)),a.container.scrollTop=p*b/n,a.container.scrollLeft=t*b/n;else if(0!=d||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",
mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var k=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";
this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=a.isViewer()?"0":"50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var l=mxUtils.bind(this,function(){var b=
mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",l);l();var q=0,l=mxUtils.bind(this,function(a,b,e){q++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=e&&d.setAttribute("title",
@@ -2281,23 +2282,23 @@ e);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("
e=document.createElement("div");e.style.display="inline-block";e.style.verticalAlign="top";e.style.fontFamily="Helvetica,Arial";e.style.marginTop="8px";e.style.fontSize="14px";e.style.color="#ffffff";this.chromelessToolbar.appendChild(e);var g=l(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),p=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(e.innerHTML="",mxUtils.write(e,
mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});b.style.paddingLeft="0px";b.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",b.style.display="",e.style.display="inline-block"):(g.style.display="none",b.style.display="none",e.style.display="none");p()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",
p)}l(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");l(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");l(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,
-mxResources.get("fit"));var n=null,v=null,t=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;v=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";v=null}),600)}),a||200)}),x=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),
+mxResources.get("fit"));var n=null,v=null,u=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;v=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";v=null}),600)}),a||200)}),x=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),
fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var y=l(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=
null}));var e=y.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=e.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=e.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),E=a.getModel();E.addListener(mxEvent.CHANGE,function(){y.style.display=1<E.getChildCount(E.root)?"":"none"})}this.addChromelessToolbarItems(l);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||l(mxUtils.bind(this,function(b){null!=
this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var z=this.lightboxToolbarActions[m];l(z.fn,z.icon,z.tooltip)}null!=k.refreshBtn&&l(mxUtils.bind(this,function(a){k.refreshBtn.url?window.location.href=k.refreshBtn.url:
window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));null!=k.fullscreenBtn&&window.self!==window.top&&l(mxUtils.bind(this,function(b){k.fullscreenBtn.url?a.openLink(k.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(b)}),Editor.fullscreenLargeImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(k.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&l(mxUtils.bind(this,
function(a){"1"==urlParams.close||k.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||
-x(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():x(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():x(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+x(30),u())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():x(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():x(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
x(30)}));var C=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,e){this.startX=e.getGraphX();this.startY=e.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,e){mxEvent.isTouchEvent(e.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<C&&Math.abs(this.scrollTop-a.container.scrollTop)<C&&Math.abs(this.startX-e.getGraphX())<C&&Math.abs(this.startY-e.getGraphY())<
-C&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?t():x(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var A=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}A.apply(this,arguments)};if(!a.isViewer()){var D=a.sizeDidChange;a.sizeDidChange=
+C&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?u():x(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var A=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}A.apply(this,arguments)};if(!a.isViewer()){var D=a.sizeDidChange;a.sizeDidChange=
function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),e=this.getPagePadding(),d=this.getPageSize(),c=Math.ceil(2*e.x+b.width*d.width),g=Math.ceil(2*e.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=c||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=e.x-b.x*d.width;e=e.y-b.y*d.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==e?D.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=
-b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(c,e),a.container.scrollLeft+=Math.round((c-b)*a.view.scale),a.container.scrollTop+=Math.round((e-d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var G=a.view.getBackgroundPane(),F=a.view.getDrawPane();a.cumulativeZoomFactor=1;var I=null,J=null,u=null,K=null,B=function(b){null!=I&&window.clearTimeout(I);window.setTimeout(function(){a.isMouseDown||(I=window.setTimeout(mxUtils.bind(this,
+b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(c,e),a.container.scrollLeft+=Math.round((c-b)*a.view.scale),a.container.scrollTop+=Math.round((e-d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var G=a.view.getBackgroundPane(),F=a.view.getDrawPane();a.cumulativeZoomFactor=1;var I=null,J=null,t=null,K=null,B=function(b){null!=I&&window.clearTimeout(I);window.setTimeout(function(){a.isMouseDown||(I=window.setTimeout(mxUtils.bind(this,
function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),F.style.transformOrigin="",G.style.transformOrigin="",mxClient.IS_SF?(F.style.transform="scale(1)",G.style.transform="scale(1)",window.setTimeout(function(){F.style.transform="";G.style.transform=""},0)):(F.style.transform=
-"",G.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var b=new mxPoint(a.container.scrollLeft,a.container.scrollTop),e=mxUtils.getOffset(a.container),d=a.view.scale,g=0,p=0;null!=J&&(g=a.container.offsetWidth/2-J.x+e.x,p=a.container.offsetHeight/2-J.y+e.y);a.zoom(a.cumulativeZoomFactor);a.view.scale!=d&&(null!=u&&(g+=b.x-u.x,p+=b.y-u.y),null!=c&&f.chromelessResize(!1,null,g*(a.cumulativeZoomFactor-1),p*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||
-0==g&&0==p||(a.container.scrollLeft-=g*(a.cumulativeZoomFactor-1),a.container.scrollTop-=p*(a.cumulativeZoomFactor-1)));null!=K&&F.setAttribute("filter",K);a.cumulativeZoomFactor=1;K=J=u=I=null}),null!=b?b:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay))},0)};a.lazyZoom=function(b,e,d){(e=e||!a.scrollbars)&&(J=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
+"",G.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var b=new mxPoint(a.container.scrollLeft,a.container.scrollTop),e=mxUtils.getOffset(a.container),d=a.view.scale,g=0,n=0;null!=J&&(g=a.container.offsetWidth/2-J.x+e.x,n=a.container.offsetHeight/2-J.y+e.y);a.zoom(a.cumulativeZoomFactor);a.view.scale!=d&&(null!=t&&(g+=b.x-t.x,n+=b.y-t.y),null!=c&&f.chromelessResize(!1,null,g*(a.cumulativeZoomFactor-1),n*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||
+0==g&&0==n||(a.container.scrollLeft-=g*(a.cumulativeZoomFactor-1),a.container.scrollTop-=n*(a.cumulativeZoomFactor-1)));null!=K&&F.setAttribute("filter",K);a.cumulativeZoomFactor=1;K=J=t=I=null}),null!=b?b:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay))},0)};a.lazyZoom=function(b,e,d){(e=e||!a.scrollbars)&&(J=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160))/this.view.scale;if(a.isFastZoomEnabled()){null==K&&""!=F.getAttribute("filter")&&(K=F.getAttribute("filter"),F.removeAttribute("filter"));u=new mxPoint(a.container.scrollLeft,a.container.scrollTop);b=e?a.container.scrollLeft+a.container.clientWidth/2:J.x+a.container.scrollLeft-a.container.offsetLeft;var c=e?a.container.scrollTop+a.container.clientHeight/2:J.y+a.container.scrollTop-a.container.offsetTop;F.style.transformOrigin=b+"px "+c+"px";F.style.transform="scale("+
+this.cumulativeZoomFactor,160))/this.view.scale;if(a.isFastZoomEnabled()){null==K&&""!=F.getAttribute("filter")&&(K=F.getAttribute("filter"),F.removeAttribute("filter"));t=new mxPoint(a.container.scrollLeft,a.container.scrollTop);b=e?a.container.scrollLeft+a.container.clientWidth/2:J.x+a.container.scrollLeft-a.container.offsetLeft;var c=e?a.container.scrollTop+a.container.clientHeight/2:J.y+a.container.scrollTop-a.container.offsetTop;F.style.transformOrigin=b+"px "+c+"px";F.style.transform="scale("+
this.cumulativeZoomFactor+")";G.style.transformOrigin=b+"px "+c+"px";G.style.transform="scale("+this.cumulativeZoomFactor+")";null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(b=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(b.style,"transform-origin",(e?a.container.clientWidth/2+a.container.scrollLeft-b.offsetLeft+"px":J.x+a.container.scrollLeft-b.offsetLeft-a.container.offsetLeft+"px")+" "+(e?a.container.clientHeight/2+a.container.scrollTop-b.offsetTop+"px":J.y+
a.container.scrollTop-b.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(b.style,"transform","scale("+this.cumulativeZoomFactor+")"));a.view.getDecoratorPane().style.opacity="0";a.view.getOverlayPane().style.opacity="0";null!=f.hoverIcons&&f.hoverIcons.reset()}B(d)};mxEvent.addGestureListeners(a.container,function(a){null!=I&&window.clearTimeout(I)},null,function(b){1!=a.cumulativeZoomFactor&&B(0)});mxEvent.addListener(a.container,"scroll",function(){I&&!a.isMouseDown&&1!=a.cumulativeZoomFactor&&
B(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,e,d){if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&a.isScrollWheelEvent(b)){d=a.view.getTranslate();var c=40/a.view.scale;mxEvent.isShiftDown(b)?a.view.setTranslate(d.x+(e?-c:c),d.y):a.view.setTranslate(d.x,d.y+(e?c:-c))}else if(d||a.isZoomWheelEvent(b))for(d=mxEvent.getSource(b);null!=d;){if(d==a.container)return a.tooltipHandler.hideTooltip(),J=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),a.lazyZoom(e),
@@ -2384,32 +2385,32 @@ mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphMo
mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,c,f){return null};
Graph=function(a,c,f,d,k,l){mxGraph.call(this,a,c,f,d);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=l?l:!1;a=this.baseUrl;c=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=a.indexOf("/",c+2),0<c&&(this.domainUrl=a.substring(0,c)),c=a.lastIndexOf("/"),0<c&&(this.domainPathUrl=a.substring(0,c+1)));this.isHtmlLabel=function(a){a=this.getCurrentCellStyle(a);
return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var q=null,b=null,e=null,g=null,p=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")&&this.isEnabled()){var c=d.getProperty("event"),f=c.getState();if(!mxEvent.isAltDown(c.getEvent())&&null!=f)if(this.model.isEdge(f.cell))if(q=new mxPoint(c.getGraphX(),c.getGraphY()),p=this.isCellSelected(f.cell),e=f,b=c,null!=f.text&&null!=f.text.boundingBox&&
-mxUtils.contains(f.text.boundingBox,c.getGraphX(),c.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(g=m.getHandleForEvent(c))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(c.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(c))){var u=new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);u.grow(mxEvent.isTouchEvent(c.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)){var n=this.model.getParent(f.cell),m=this.model.getParent(n);if(!this.isCellSelected(m)&&(mxUtils.intersects(u,new mxRectangle(f.x,f.y-2,f.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(u,new mxRectangle(f.x,f.y+f.height-2,f.width,3))||mxUtils.intersects(u,new mxRectangle(f.x-2,f.y,2,f.height))&&this.model.getChildAt(n,0)!=f.cell||mxUtils.intersects(u,new mxRectangle(f.x+f.width-
-2,f.y,2,f.height)))&&(n=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,c.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m)){var t=m.getHandleForEvent(c);null!=t&&(m.start(c.getGraphX(),c.getGraphY(),t),m.blockDelayedSelection=!n,c.consume())}}for(;!c.isConsumed()&&null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),n=this.view.scale,(0<m.x||0<m.width)&&mxUtils.intersects(u,
-new mxRectangle(f.x+(m.x-m.width-1)*n+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(u,new mxRectangle(f.x,f.y+(m.y-m.height-1)*n+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,c.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(t=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(c.getGraphX(),c.getGraphY(),t),c.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(a,b){},
+mxUtils.contains(f.text.boundingBox,c.getGraphX(),c.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(g=m.getHandleForEvent(c))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(c.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(c))){var t=new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);t.grow(mxEvent.isTouchEvent(c.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)){var n=this.model.getParent(f.cell),m=this.model.getParent(n);if(!this.isCellSelected(m)&&(mxUtils.intersects(t,new mxRectangle(f.x,f.y-2,f.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(t,new mxRectangle(f.x,f.y+f.height-2,f.width,3))||mxUtils.intersects(t,new mxRectangle(f.x-2,f.y,2,f.height))&&this.model.getChildAt(n,0)!=f.cell||mxUtils.intersects(t,new mxRectangle(f.x+f.width-
+2,f.y,2,f.height)))&&(n=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,c.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m)){var u=m.getHandleForEvent(c);null!=u&&(m.start(c.getGraphX(),c.getGraphY(),u),m.blockDelayedSelection=!n,c.consume())}}for(;!c.isConsumed()&&null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),n=this.view.scale,(0<m.x||0<m.width)&&mxUtils.intersects(t,
+new mxRectangle(f.x+(m.x-m.width-1)*n+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(t,new mxRectangle(f.x,f.y+(m.y-m.height-1)*n+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,c.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(u=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(c.getGraphX(),c.getGraphY(),u),c.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(a,b){},
mouseMove:mxUtils.bind(this,function(a,d){var c=this.selectionCellsHandler.handlers.map,f;for(f in c)if(null!=c[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(d.getEvent()))if(f=this.tolerance,null!=q&&null!=e&&null!=b){if(c=e,Math.abs(q.x-d.getGraphX())>f||Math.abs(q.y-d.getGraphY())>f){this.isCellSelected(c.cell)||this.selectCellForEvent(c.cell,d.getEvent());var m=this.selectionCellsHandler.getHandler(c.cell);if(null!=m&&null!=m.bends&&0<m.bends.length){f=
-m.getHandleForEvent(b);var u=this.view.getEdgeStyle(c),n=u==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(n&&0!=f&&f!=m.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!n||null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),d.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=c.visibleSourceState||f==m.bends.length-1||null!=c.visibleTargetState)n||f==mxEvent.LABEL_HANDLE||(n=c.absolutePoints,null!=n&&(null==u&&null==f||u==mxEdgeStyle.OrthConnector)&&(f=
-g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,n[0].x,n[0].y)?f=0:mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y)?f=m.bends.length-1:null!=u&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?f=2:(f=mxUtils.findNearestSegment(c,q.x,q.y),f=null==u?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),m.start(d.getGraphX(),
+m.getHandleForEvent(b);var t=this.view.getEdgeStyle(c),n=t==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(n&&0!=f&&f!=m.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!n||null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),d.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=c.visibleSourceState||f==m.bends.length-1||null!=c.visibleTargetState)n||f==mxEvent.LABEL_HANDLE||(n=c.absolutePoints,null!=n&&(null==t&&null==f||t==mxEdgeStyle.OrthConnector)&&(f=
+g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,n[0].x,n[0].y)?f=0:mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y)?f=m.bends.length-1:null!=t&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?f=2:(f=mxUtils.findNearestSegment(c,q.x,q.y),f=null==t?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),m.start(d.getGraphX(),
d.getGraphX(),f),g=q=b=e=null,p=!1,d.consume(),this.graphHandler.reset()}}}else if(c=d.getState(),null!=c){m=null;if(this.model.isEdge(c.cell)){if(f=new mxRectangle(d.getGraphX(),d.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),n=c.absolutePoints,null!=n)if(null!=c.text&&null!=c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,d.getGraphX(),d.getGraphY()))m="move";else if(mxUtils.contains(f,n[0].x,n[0].y)||mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y))m="pointer";else if(null!=
-c.visibleSourceState||null!=c.visibleTargetState)f=this.view.getEdgeStyle(c),m="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(f=mxUtils.findNearestSegment(c,d.getGraphX(),d.getGraphY()),f<n.length-1&&0<=f&&(m=0==Math.round(n[f].x-n[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(d.getEvent())){f=new mxRectangle(d.getGraphX()-1,d.getGraphY()-1);f.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(c.cell)&&(n=this.model.getParent(c.cell),u=this.model.getParent(n),
-!this.isCellSelected(u)))if(mxUtils.intersects(f,new mxRectangle(c.x-2,c.y,2,c.height))&&this.model.getChildAt(n,0)!=c.cell||mxUtils.intersects(f,new mxRectangle(c.x+c.width-2,c.y,2,c.height)))m="col-resize";else if(mxUtils.intersects(f,new mxRectangle(c.x,c.y-2,c.width,3))&&this.model.getChildAt(u,0)!=n||mxUtils.intersects(f,new mxRectangle(c.x,c.y+c.height-2,c.width,3)))m="row-resize";for(n=c;null==m&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var u=
-this.getActualStartSize(n.cell),t=this.view.scale;(0<u.x||0<u.width)&&mxUtils.intersects(f,new mxRectangle(n.x+(u.x-u.width-1)*t+(0==u.x?n.width*t:0),n.y,1,n.height))?m="col-resize":(0<u.y||0<u.height)&&mxUtils.intersects(f,new mxRectangle(n.x,n.y+(u.y-u.height-1)*t+(0==u.y?n.height:0),n.width,1))&&(m="row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=m&&c.setCursor(m)}}),mouseUp:mxUtils.bind(this,function(a,d){g=q=b=e=null})})}this.cellRenderer.getLabelValue=function(a){var b=
+c.visibleSourceState||null!=c.visibleTargetState)f=this.view.getEdgeStyle(c),m="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(f=mxUtils.findNearestSegment(c,d.getGraphX(),d.getGraphY()),f<n.length-1&&0<=f&&(m=0==Math.round(n[f].x-n[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(d.getEvent())){f=new mxRectangle(d.getGraphX()-1,d.getGraphY()-1);f.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(c.cell)&&(n=this.model.getParent(c.cell),t=this.model.getParent(n),
+!this.isCellSelected(t)))if(mxUtils.intersects(f,new mxRectangle(c.x-2,c.y,2,c.height))&&this.model.getChildAt(n,0)!=c.cell||mxUtils.intersects(f,new mxRectangle(c.x+c.width-2,c.y,2,c.height)))m="col-resize";else if(mxUtils.intersects(f,new mxRectangle(c.x,c.y-2,c.width,3))&&this.model.getChildAt(t,0)!=n||mxUtils.intersects(f,new mxRectangle(c.x,c.y+c.height-2,c.width,3)))m="row-resize";for(n=c;null==m&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var t=
+this.getActualStartSize(n.cell),u=this.view.scale;(0<t.x||0<t.width)&&mxUtils.intersects(f,new mxRectangle(n.x+(t.x-t.width-1)*u+(0==t.x?n.width*u:0),n.y,1,n.height))?m="col-resize":(0<t.y||0<t.height)&&mxUtils.intersects(f,new mxRectangle(n.x,n.y+(t.y-t.height-1)*u+(0==t.y?n.height:0),n.width,1))&&(m="row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=m&&c.setCursor(m)}}),mouseUp:mxUtils.bind(this,function(a,d){g=q=b=e=null})})}this.cellRenderer.getLabelValue=function(a){var b=
mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=
!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],e=this.graph.pageFormat,d=this.graph.pageScale,c=e.width*d,e=e.height*d,d=this.graph.view.translate,f=this.graph.view.scale,g=this.graph.getPageLayout(),
p=0;p<g.width;p++)b.push(new mxRectangle(((g.x+p)*c+d.x)*f,(g.y*e+d.y)*f,c*f,e*f));for(p=1;p<g.height;p++)b.push(new mxRectangle((g.x*c+d.x)*f,((g.y+p)*e+d.y)*f,c*f,e*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;
return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var n=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var b=n.apply(this,arguments),e=new mxDictionary,d=[],c=0;c<b.length;c++){var f=this.graph.isTableCell(a)&&this.graph.isTableCell(b[c])&&this.graph.isCellSelected(b[c])?this.graph.model.getParent(b[c]):this.graph.isTableRow(a)&&this.graph.isTableRow(b[c])&&this.graph.isCellSelected(b[c])?b[c]:this.graph.getCompositeParent(b[c]);null==f||e.get(f)||(e.put(f,
-!0),d.push(f))}return d};var v=this.graphHandler.start;this.graphHandler.start=function(a,b,e,d){var c=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?c=!0:a=this.graph.model.getParent(a));c||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));v.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);
-this.getRubberband=function(){return t};var x=(new Date).getTime(),y=0,E=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;E.apply(this,arguments);a!=this.currentState?(x=(new Date).getTime(),y=0):y=(new Date).getTime()-x};var z=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&z.apply(this,arguments)};var C=this.isToggleEvent;this.isToggleEvent=function(a){return C.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var A=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(a){return A.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&
+!0),d.push(f))}return d};var v=this.graphHandler.start;this.graphHandler.start=function(a,b,e,d){var c=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?c=!0:a=this.graph.model.getParent(a));c||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));v.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var u=new mxRubberband(this);
+this.getRubberband=function(){return u};var x=(new Date).getTime(),y=0,E=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;E.apply(this,arguments);a!=this.currentState?(x=(new Date).getTime(),y=0):y=(new Date).getTime()-x};var z=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&z.apply(this,arguments)};var C=this.isToggleEvent;this.isToggleEvent=function(a){return C.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var A=u.isForceRubberbandEvent;u.isForceRubberbandEvent=function(a){return A.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&
mxEvent.isTouchEvent(a.getEvent())};var D=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(D=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=D)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var G=this.click;this.click=
function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return G.apply(this,arguments);var e=b?a.sourceState.cell:a.getCell();null!=e&&(e=this.getClickableLinkForCell(e),null!=e&&(this.isCustomLink(e)?this.customLinkClicked(e):this.openLink(e)));this.isEnabled()&&b&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=
a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var F=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getClickableLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return F.apply(this,arguments)};this.selectRegion=function(a,b){var e=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(e,b);return e};this.getAllCells=function(a,
-b,e,d,c,f){f=null!=f?f:[];if(0<e||0<d){var g=this.getModel(),p=a+e,m=b+d;null==c&&(c=this.getCurrentRoot(),null==c&&(c=g.getRoot()));if(null!=c)for(var n=g.getChildCount(c),u=0;u<n;u++){var t=g.getChildAt(c,u),l=this.view.getState(t);if(null!=l&&this.isCellVisible(t)&&"1"!=mxUtils.getValue(l.style,"locked","0")){var B=mxUtils.getValue(l.style,mxConstants.STYLE_ROTATION)||0;0!=B&&(l=mxUtils.getBoundingBox(l,B));(g.isEdge(t)||g.isVertex(t))&&l.x>=a&&l.y+l.height<=m&&l.y>=b&&l.x+l.width<=p&&f.push(t);
-this.getAllCells(a,b,e,d,t,f)}}}return f};var I=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,e){return this.graph.isCellSelected(a)?!1:I.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var J=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==
-b.getProperty("eventName")){var e=b.getProperty("event").getState();J=null==e||this.isSelectionEmpty()||this.isCellSelected(e.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var e=b.getProperty("event"),d=b.getProperty("cell");null==d?(e=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),t.start(e.x,e.y)):null!=J?this.addSelectionCells(J):1<this.getSelectionCount()&&this.isCellSelected(d)&&
-this.removeSelectionCell(d);J=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var e=a.view.graph;return b&&(e.isCellSelected(a.cell)||e.isTableRow(a.cell)&&e.selectionCellsHandler.isHandled(e.model.getParent(a.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,
-!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var u=this.updateMouseEvent;this.updateMouseEvent=function(a){a=u.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;
+b,e,d,c,f){f=null!=f?f:[];if(0<e||0<d){var g=this.getModel(),p=a+e,m=b+d;null==c&&(c=this.getCurrentRoot(),null==c&&(c=g.getRoot()));if(null!=c)for(var n=g.getChildCount(c),t=0;t<n;t++){var u=g.getChildAt(c,t),B=this.view.getState(u);if(null!=B&&this.isCellVisible(u)&&"1"!=mxUtils.getValue(B.style,"locked","0")){var l=mxUtils.getValue(B.style,mxConstants.STYLE_ROTATION)||0;0!=l&&(B=mxUtils.getBoundingBox(B,l));(g.isEdge(u)||g.isVertex(u))&&B.x>=a&&B.y+B.height<=m&&B.y>=b&&B.x+B.width<=p&&f.push(u);
+this.getAllCells(a,b,e,d,u,f)}}}return f};var I=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,e){return this.graph.isCellSelected(a)?!1:I.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var J=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==
+b.getProperty("eventName")){var e=b.getProperty("event").getState();J=null==e||this.isSelectionEmpty()||this.isCellSelected(e.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var e=b.getProperty("event"),c=b.getProperty("cell");null==c?(e=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),u.start(e.x,e.y)):null!=J?this.addSelectionCells(J):1<this.getSelectionCount()&&this.isCellSelected(c)&&
+this.removeSelectionCell(c);J=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var e=a.view.graph;return b&&(e.isCellSelected(a.cell)||e.isTableRow(a.cell)&&e.selectionCellsHandler.isHandled(e.model.getParent(a.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,
+!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var t=this.updateMouseEvent;this.updateMouseEvent=function(a){a=t.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;
Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;Graph.minTableColumnWidth=20;Graph.minTableRowHeight=20;Graph.foreignObjectWarningText="Viewer does not support full SVG 1.1";Graph.foreignObjectWarningLink="https://desk.draw.io/support/solutions/articles/16000042487";
Graph.createSvgImage=function(a,c,f,d,k){f=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" '+(null!=d&&null!=k?'viewBox="0 0 '+d+" "+k+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,c)};
Graph.zapGremlins=function(a){for(var c=[],f=0;f<a.length;f++){var d=a.charCodeAt(f);(32<=d||9==d||10==d||13==d)&&65535!=d&&65534!=d&&c.push(a.charAt(f))}return c.join("")};Graph.stringToBytes=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=a.charCodeAt(f);return c};Graph.bytesToString=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=String.fromCharCode(a[f]);return c.join("")};Graph.compressNode=function(a,c){var f=mxUtils.getXml(a);return Graph.compress(c?f:Graph.zapGremlins(f))};
@@ -2419,7 +2420,7 @@ Graph.linkPattern=/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((
Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;
Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0];Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"];
Graph.prototype.standalone=!1;
-Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var d=a.view.graph.tolerance,c=!0,l=null,q=mxUtils.bind(this,function(a){c=!0;l=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),b=mxUtils.bind(this,function(a){c=c&&null!=l&&Math.abs(l.x-mxEvent.getClientX(a))<d&&Math.abs(l.y-mxEvent.getClientY(a))<d}),e=mxUtils.bind(this,function(b){if(c)for(var e=mxEvent.getSource(b);null!=
+Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var c=a.view.graph.tolerance,k=!0,l=null,q=mxUtils.bind(this,function(a){k=!0;l=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),b=mxUtils.bind(this,function(a){k=k&&null!=l&&Math.abs(l.x-mxEvent.getClientX(a))<c&&Math.abs(l.y-mxEvent.getClientY(a))<c}),e=mxUtils.bind(this,function(b){if(k)for(var e=mxEvent.getSource(b);null!=
e&&e!=f.node;){if("a"==e.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,e,b);break}e=e.parentNode}});mxEvent.addGestureListeners(f.node,q,b,e);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()};
(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.getCells=function(a,c){a=null!=a?a:!0;c=null!=c?c:!0;var d=this.model;return d.filterDescendants(function(f){return a&&d.isVertex(f)||c&&d.isEdge(f)},d.getRoot())};Graph.prototype.getStartEditingCell=function(a,c){var d=this.getCellStyle(a),d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(a)&&(!this.isSwimlane(a)||0==d)&&""==this.getLabel(a)&&
0<this.model.getChildCount(a)&&(a=this.model.getChildAt(a,0),d=this.getCellStyle(a),d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(a)&&(!this.isSwimlane(a)||0==d)&&""==this.getLabel(a)&&0<this.model.getChildCount(a))for(d=0;d<this.model.getChildCount(a);d++){var f=this.model.getChildAt(a,d);if(this.isCellEditable(f)){a=f;break}}return a};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&
@@ -2448,21 +2449,21 @@ Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);ret
Graph.prototype.getClickableLinkForCell=function(a){do{var c=this.getLinkForCell(a);if(null!=c)return c;a=this.model.getParent(a)}while(null!=a);return null};Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
Graph.prototype.formatDate=function(a,c,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var d=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,l=/[^-+\dA-Z]/g,q=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(d.masks[c]||c||d.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),f=!0);var b=f?"getUTC":"get",e=a[b+"Date"](),g=a[b+"Day"](),p=a[b+"Month"](),m=a[b+"FullYear"](),n=a[b+"Hours"](),v=a[b+"Minutes"](),t=a[b+"Seconds"](),b=a[b+"Milliseconds"](),x=f?0:a.getTimezoneOffset(),y={d:e,dd:q(e),ddd:d.i18n.dayNames[g],dddd:d.i18n.dayNames[g+7],m:p+1,mm:q(p+1),mmm:d.i18n.monthNames[p],mmmm:d.i18n.monthNames[p+
-12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:q(n%12||12),H:n,HH:q(n),M:v,MM:q(v),s:t,ss:q(t),l:q(b,3),L:q(99<b?Math.round(b/10):b),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(l,""),o:(0<x?"-":"+")+q(100*Math.floor(Math.abs(x)/60)+Math.abs(x)%60,4),S:["th","st","nd","rd"][3<e%10?0:(10!=e%100-e%10)*e%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in y?y[a]:a.slice(1,
+/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(d.masks[c]||c||d.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),f=!0);var b=f?"getUTC":"get",e=a[b+"Date"](),g=a[b+"Day"](),p=a[b+"Month"](),m=a[b+"FullYear"](),n=a[b+"Hours"](),v=a[b+"Minutes"](),u=a[b+"Seconds"](),b=a[b+"Milliseconds"](),x=f?0:a.getTimezoneOffset(),y={d:e,dd:q(e),ddd:d.i18n.dayNames[g],dddd:d.i18n.dayNames[g+7],m:p+1,mm:q(p+1),mmm:d.i18n.monthNames[p],mmmm:d.i18n.monthNames[p+
+12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:q(n%12||12),H:n,HH:q(n),M:v,MM:q(v),s:u,ss:q(u),l:q(b,3),L:q(99<b?Math.round(b/10):b),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(l,""),o:(0<x?"-":"+")+q(100*Math.floor(Math.abs(x)/60)+Math.abs(x)%60,4),S:["th","st","nd","rd"][3<e%10?0:(10!=e%100-e%10)*e%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in y?y[a]:a.slice(1,
a.length-1)})};
Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var c=this.getModel(),f=c.getChildCount(c.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");c.isVisible(d)&&(k.setAttribute("checked","checked"),
k.defaultChecked=!0);f.appendChild(k);var b=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",b);mxUtils.write(f,b);a.appendChild(f);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");c.setVisible(d,k.checked)})})(c.getChildAt(c.root,d));return a};
Graph.prototype.replacePlaceholders=function(a,c){var f=[];if(null!=c){for(var d=0;match=this.placeholderPattern.exec(c);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var l=null;if(match.index>d&&"%"==c.charAt(match.index-1))l=k.substring(1);else{var q=k.substring(1,k.length-1);if("id"==q)l=a.id;else if(0>q.indexOf("{"))for(var b=a;null==l&&null!=b;)null!=b.value&&"object"==typeof b.value&&(l=b.hasAttribute(q)?null!=b.getAttribute(q)?b.getAttribute(q):"":null),b=this.model.getParent(b);
null==l&&(l=this.getGlobalVariable(q))}f.push(c.substring(d,match.index)+(null!=l?l:k));d=match.index+k.length}}f.push(c.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&c.push(d)}this.setSelectionCells(c)}else this.clearSelection()};
-Graph.prototype.selectCellsForConnectVertex=function(a,c,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(c)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};Graph.prototype.getConnectVertexTargetAt=function(a,c,f,d){return this.getCellAt(c,f)};
+Graph.prototype.selectCellsForConnectVertex=function(a,c,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(c)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};
Graph.prototype.connectVertex=function(a,c,f,d,k,l,q,b){if(a.geometry.relative&&this.model.isEdge(a.parent))return[];l=l?l:!1;var e=this.getCompositeParent(a),g=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(e.geometry.x,e.geometry.y);c==mxConstants.DIRECTION_NORTH?(g.x+=e.geometry.width/2,g.y-=f):c==mxConstants.DIRECTION_SOUTH?(g.x+=e.geometry.width/2,g.y+=e.geometry.height+f):(g.x=c==mxConstants.DIRECTION_WEST?
-g.x-f:g.x+(e.geometry.width+f),g.y+=e.geometry.height/2);f=this.view.getState(this.model.getParent(a));var e=this.view.scale,p=this.view.translate,m=p.x*e,p=p.y*e;null!=f&&this.model.isVertex(f.cell)&&(m=f.x,p=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);l=l||mxEvent.isControlDown(d)&&!k?null:this.getConnectVertexTargetAt(a,m+g.x*e,p+g.y*e);this.model.isAncestor(l,a)&&(l=null);for(f=l;null!=f;){if(this.isCellLocked(f)){l=null;break}f=
-this.model.getParent(f)}null!=l&&(f=this.view.getState(a),e=this.view.getState(l),null!=f&&null!=e&&mxUtils.intersects(f,e)&&(l=null));if(k=(!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d))&&!b||k)c==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=c==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2;null==l||this.isCellConnectable(l)||this.isSwimlane(l)||(b=this.getModel().getParent(l),this.getModel().isVertex(b)&&
-this.isCellConnectable(b)&&(l=b));if(l==a||this.model.isEdge(l)||!this.isCellConnectable(l)&&!this.isSwimlane(l))l=null;b=[];this.model.beginUpdate();try{var n=null!=l&&this.isSwimlane(l);f=n?null:l;if(null==f&&k){for(var e=null!=q?q:a,v=this.getCellGeometry(e);null!=v&&v.relative;)e=this.getModel().getParent(e),v=this.getCellGeometry(e);e=this.getCompositeParent(e);f=this.duplicateCells([e],!1)[0];v=this.getCellGeometry(f);null!=v&&(v.x=g.x-v.width/2,v.y=g.y-v.height/2);if(n||null!=q)this.addCells([f],
-l,null,null,null,!0),l=null}q=null;null!=this.layoutManager&&(q=this.layoutManager.getLayout(this.model.getParent(a)));var t=mxEvent.isControlDown(d)&&mxEvent.isShiftDown(d)&&k||null==l&&null!=q&&q.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,f,this.createCurrentEdgeStyle());if(null!=t&&this.connectionHandler.insertBeforeSource){var x=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=t.parent;)d=this.model.getParent(d);null!=d&&null!=
-d.parent&&d.parent==t.parent&&(x=d.parent.getIndex(d),this.model.add(d.parent,t,x))}null==l&&null!=f&&null!=q&&null!=a.parent&&q.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(x=a.parent.getIndex(a),this.model.add(a.parent,f,x));null!=t&&b.push(t);null==l&&null!=f&&b.push(f);null==f&&null!=t&&t.geometry.setTerminalPoint(g,!1);null!=t&&this.fireEvent(new mxEventObject("cellsInserted","cells",[t]))}finally{this.model.endUpdate()}return b};
-Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.sanitizeHtml(this.getLabel(f)),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&c.push(f);return c.join(" ")};
+g.x-f:g.x+(e.geometry.width+f),g.y+=e.geometry.height/2);var p=this.view.getState(this.model.getParent(a));f=this.view.scale;var m=this.view.translate,e=m.x*f,m=m.y*f;null!=p&&this.model.isVertex(p.cell)&&(e=p.x,m=p.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);var n=l||mxEvent.isControlDown(d)&&!k?null:this.getCellAt(e+g.x*f,m+g.y*f);this.model.isAncestor(n,a)&&(n=null);for(l=n;null!=l;){if(this.isCellLocked(l)){n=null;break}l=this.model.getParent(l)}null!=
+n&&(l=this.view.getState(a),p=this.view.getState(n),null!=l&&null!=p&&mxUtils.intersects(l,p)&&(n=null));var v=!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||k;v&&(c==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=c==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2);null==n||this.isCellConnectable(n)||this.isSwimlane(n)||(k=this.getModel().getParent(n),this.getModel().isVertex(k)&&this.isCellConnectable(k)&&
+(n=k));if(n==a||this.model.isEdge(n)||!this.isCellConnectable(n)&&!this.isSwimlane(n))n=null;var u=[],x=null!=n&&this.isSwimlane(n),y=x?null:n;k=mxUtils.bind(this,function(e){this.model.beginUpdate();try{if(null==y&&v){for(var f=null!=e?e:a,m=this.getCellGeometry(f);null!=m&&m.relative;)f=this.getModel().getParent(f),m=this.getCellGeometry(f);f=this.getCompositeParent(f);y=this.duplicateCells([f],!1)[0];m=this.getCellGeometry(y);null!=m&&(m.x=g.x-m.width/2,m.y=g.y-m.height/2);if(x||null!=e)this.addCells([y],
+n,null,null,null,!0),n=null}e=null;null!=this.layoutManager&&(e=this.layoutManager.getLayout(this.model.getParent(a)));var p=mxEvent.isControlDown(d)&&mxEvent.isShiftDown(d)&&v||null==n&&null!=e&&e.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,y,this.createCurrentEdgeStyle());if(null!=p&&this.connectionHandler.insertBeforeSource){for(var k=null,f=a;null!=f.parent&&null!=f.geometry&&f.geometry.relative&&f.parent!=p.parent;)f=this.model.getParent(f);null!=f&&null!=
+f.parent&&f.parent==p.parent&&(k=f.parent.getIndex(f),this.model.add(f.parent,p,k))}null==n&&null!=y&&null!=e&&null!=a.parent&&e.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(k=a.parent.getIndex(a),this.model.add(a.parent,y,k));null!=p&&u.push(p);null==n&&null!=y&&u.push(y);null==y&&null!=p&&p.geometry.setTerminalPoint(g,!1);null!=p&&this.fireEvent(new mxEventObject("cellsInserted","cells",[p]))}finally{this.model.endUpdate()}if(null!=b)b(u);else return u});if(null!=q&&null==y&&v)q(e+
+g.x*f,m+g.y*f,k);else return k()};Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.sanitizeHtml(this.getLabel(f)),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&c.push(f);return c.join(" ")};
Graph.prototype.convertValueToString=function(a){var c=this.model.getValue(a);if(null!=c&&"object"==typeof c){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),f=a,d=null;null==d&&null!=f;)null!=f.value&&"object"==typeof f.value&&(d=f.hasAttribute(c)?null!=f.getAttribute(c)?f.getAttribute(c):"":null),f=this.model.getParent(f);return d||""}return c.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};
Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getCellStyle=function(a){var c=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(c[mxConstants.STYLE_HORIZONTAL]=!f.horizontal))}return c};
@@ -2526,12 +2527,12 @@ f){var n=this.getCellGeometry(l);null!=n&&(n=n.clone(),n.width+=c,d.setGeometry(
TableLayout.prototype.getSize=function(a,c){for(var f=0,d=0;d<a.length;d++)if(!this.isVertexIgnored(a[d])){var k=this.graph.getCellGeometry(a[d]);null!=k&&(f+=c?k.width:k.height)}return f};TableLayout.prototype.getRowLayout=function(a,c){for(var f=this.graph.model.getChildCells(a,!0),d=this.graph.getActualStartSize(a,!0),k=this.getSize(f,!0),l=c-d.x-d.width,q=[],d=d.x,b=0;b<f.length;b++){var e=this.graph.getCellGeometry(f[b]);null!=e&&(d+=e.width*l/k,q.push(Math.round(d)))}return q};
TableLayout.prototype.layoutRow=function(a,c,f,d){var k=this.graph.getModel(),l=k.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var q=a.x,b=0;null!=c&&(c=c.slice(),c.splice(0,0,a.x));for(var e=0;e<l.length;e++){var g=this.graph.getCellGeometry(l[e]);null!=g&&(g=g.clone(),g.y=a.y,g.height=f-a.y-a.height,null!=c?(g.x=c[e],g.width=c[e+1]-g.x,e==l.length-1&&e<c.length-2&&(g.width=d-g.x-a.x-a.width)):(g.x=q,q+=g.width,e==l.length-1?g.width=d-a.x-a.width-b:b+=g.width),k.setGeometry(l[e],g))}return b};
TableLayout.prototype.execute=function(a){if(null!=a){var c=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),k="1"==mxUtils.getValue(d,"resizeLastRow","0"),l="1"==mxUtils.getValue(d,"resizeLast","0"),d="1"==mxUtils.getValue(d,"fixedRows","0"),q=this.graph.getModel(),b=0;q.beginUpdate();try{var e=f.height-c.y-c.height,g=f.width-c.x-c.width,p=q.getChildCells(a,!0),m=this.getSize(p,!1);if(0<e&&0<g&&0<p.length&&0<m){if(k){var n=this.graph.getCellGeometry(p[p.length-
-1]);null!=n&&(n=n.clone(),n.height=e-m+n.height,q.setGeometry(p[p.length-1],n))}for(var v=l?null:this.getRowLayout(p[0],g),t=c.y,x=0;x<p.length;x++)n=this.graph.getCellGeometry(p[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=g,n.y=Math.round(t),t=k||d?t+n.height:t+n.height/m*e,n.height=Math.round(t)-n.y,q.setGeometry(p[x],n)),b=Math.max(b,this.layoutRow(p[x],v,n.height,g));d&&e<m&&(f=f.clone(),f.height=t+c.height,q.setGeometry(a,f));l&&g<b+Graph.minTableColumnWidth&&(f=f.clone(),f.width=b+c.width+c.x+
+1]);null!=n&&(n=n.clone(),n.height=e-m+n.height,q.setGeometry(p[p.length-1],n))}for(var v=l?null:this.getRowLayout(p[0],g),u=c.y,x=0;x<p.length;x++)n=this.graph.getCellGeometry(p[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=g,n.y=Math.round(u),u=k||d?u+n.height:u+n.height/m*e,n.height=Math.round(u)-n.y,q.setGeometry(p[x],n)),b=Math.max(b,this.layoutRow(p[x],v,n.height,g));d&&e<m&&(f=f.clone(),f.height=u+c.height,q.setGeometry(a,f));l&&g<b+Graph.minTableColumnWidth&&(f=f.clone(),f.width=b+c.width+c.x+
Graph.minTableColumnWidth,q.setGeometry(a,f))}}finally{q.endUpdate()}}};
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){b=null!=b?b:!0;var e=this.getState(a);null!=e&&b&&this.graph.model.isEdge(e.cell)&&null!=e.style&&1!=e.style[mxConstants.STYLE_CURVED]&&!e.invalid&&this.updateLineJumps(e)&&this.graph.cellRenderer.redraw(e,!1,this.isRendering());e=c.apply(this,
arguments);null!=e&&b&&this.graph.model.isEdge(e.cell)&&null!=e.style&&1!=e.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(e);return e};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return f.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
-1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var e=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(b,e,d){var f=new mxPoint(e,d);f.type=b;c.push(f);f=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==f||f.type!=b||f.x!=e||f.y!=d},f=.5*this.scale,e=!1,c=[],t=0;t<b.length-1;t++){for(var l=
-b[t+1],k=b[t],q=[],z=b[t+2];t<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,z.x,z.y,l.x,l.y)<1*this.scale*this.scale;)l=z,t++,z=b[t+2];for(var e=d(0,k.x,k.y)||e,C=0;C<this.validEdges.length;C++){var A=this.validEdges[C],D=A.absolutePoints;if(null!=D&&mxUtils.intersects(a,A)&&"1"!=A.style.noJump)for(A=0;A<D.length-1;A++){for(var G=D[A+1],F=D[A],z=D[A+2];A<D.length-2&&mxUtils.ptSegDistSq(F.x,F.y,z.x,z.y,G.x,G.y)<1*this.scale*this.scale;)G=z,A++,z=D[A+2];z=mxUtils.intersection(k.x,k.y,l.x,l.y,F.x,F.y,G.x,
+1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var e=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(b,e,d){var f=new mxPoint(e,d);f.type=b;c.push(f);f=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==f||f.type!=b||f.x!=e||f.y!=d},f=.5*this.scale,e=!1,c=[],u=0;u<b.length-1;u++){for(var l=
+b[u+1],k=b[u],q=[],z=b[u+2];u<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,z.x,z.y,l.x,l.y)<1*this.scale*this.scale;)l=z,u++,z=b[u+2];for(var e=d(0,k.x,k.y)||e,C=0;C<this.validEdges.length;C++){var A=this.validEdges[C],D=A.absolutePoints;if(null!=D&&mxUtils.intersects(a,A)&&"1"!=A.style.noJump)for(A=0;A<D.length-1;A++){for(var G=D[A+1],F=D[A],z=D[A+2];A<D.length-2&&mxUtils.ptSegDistSq(F.x,F.y,z.x,z.y,G.x,G.y)<1*this.scale*this.scale;)G=z,A++,z=D[A+2];z=mxUtils.intersection(k.x,k.y,l.x,l.y,F.x,F.y,G.x,
G.y);if(null!=z&&(Math.abs(z.x-k.x)>f||Math.abs(z.y-k.y)>f)&&(Math.abs(z.x-l.x)>f||Math.abs(z.y-l.y)>f)&&(Math.abs(z.x-F.x)>f||Math.abs(z.y-F.y)>f)&&(Math.abs(z.x-G.x)>f||Math.abs(z.y-G.y)>f)){G=z.x-k.x;F=z.y-k.y;z={distSq:G*G+F*F,x:z.x,y:z.y};for(G=0;G<q.length;G++)if(q[G].distSq>z.distSq){q.splice(G,0,z);z=null;break}null==z||0!=q.length&&q[q.length-1].x===z.x&&q[q.length-1].y===z.y||q.push(z)}}}for(A=0;A<q.length;A++)e=d(1,q[A].x,q[A].y)||e}z=b[b.length-1];e=d(0,z.x,z.y)||e}a.routedPoints=c;return e}return!1};
var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,d=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,
"jumpStyle","none"),g=!0,p=null,l=null,q=[],z=null;a.begin();for(var C=0;C<this.state.routedPoints.length;C++){var A=this.state.routedPoints[C],D=new mxPoint(A.x/this.scale,A.y/this.scale);0==C?D=b[0]:C==this.state.routedPoints.length-1&&(D=b[b.length-1]);var G=!1;if(null!=p&&1==A.type){var F=this.state.routedPoints[C+1],A=F.x/this.scale-D.x,F=F.y/this.scale-D.y,A=A*A+F*F;null==z&&(z=new mxPoint(D.x-p.x,D.y-p.y),l=Math.sqrt(z.x*z.x+z.y*z.y),0<l?(z.x=z.x*d/l,z.y=z.y*d/l):z=null);A>d*d&&0<l&&(A=p.x-
@@ -2557,28 +2558,28 @@ this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.sketch&&(a+="sket
(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};
Graph.prototype.updateCellStyles=function(a,b,e){this.model.beginUpdate();try{for(var c=0;c<e.length;c++)if(this.model.isVertex(e[c])||this.model.isEdge(e[c])){this.setCellStyles(a,null,[e[c]]);var d=this.getCellStyle(e[c])[a];b!=(null==d?mxConstants.NONE:d)&&this.setCellStyles(a,b,[e[c]])}}finally{this.model.endUpdate()}};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?
mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.createCellLookup=function(a,b){b=null!=b?b:{};for(var e=0;e<a.length;e++){var c=a[e];b[mxObjectIdentity.get(c)]=c.getId();for(var d=this.model.getChildCount(c),f=0;f<d;f++)this.createCellLookup([this.model.getChildAt(c,f)],b)}return b};Graph.prototype.createCellMapping=function(a,b,e){e=null!=e?e:{};for(var c in a){var d=b[c];null==e[d]&&(e[d]=a[c].getId()||
-"")}return e};Graph.prototype.importGraphModel=function(a,b,e,c){b=null!=b?b:0;e=null!=e?e:0;var d=new mxCodec(a.ownerDocument),f=new mxGraphModel;d.decode(a,f);a=[];var d={},g={},m=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),d));if(null!=m){var u=this.createCellLookup([f.root]),m=m.slice();this.model.beginUpdate();try{if(1!=m.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<m.length;f++){var p=this.model.getChildren(this.moveCells([m[f]],b,e,!1,this.model.getRoot())[0]);
-null!=p&&(a=a.concat(p))}else a=this.moveCells(f.getChildren(m[0]),b,e,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId();if(null!=a&&(this.createCellMapping(d,u,g),this.updateCustomLinks(g,a),c)){this.isGridEnabled()&&(b=this.snap(b),e=this.snap(e));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,b-n.x,e-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},e=this.cloneCells(a,null,b),
-c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(var f=new mxCodec,g=new mxGraphModel,m=g.getChildAt(g.getRoot(),0),d=0;d<e.length;d++){g.add(m,e[d]);var u=this.view.getState(a[d]);if(null!=u){var p=this.getCellGeometry(e[d]);null!=p&&p.relative&&!this.model.isEdge(a[d])&&null==c.get(this.model.getParent(a[d]))&&(p.offset=null,p.relative=!1,p.x=u.x/u.view.scale-u.view.translate.x,p.y=u.y/u.view.scale-u.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),
+"")}return e};Graph.prototype.importGraphModel=function(a,b,e,c){b=null!=b?b:0;e=null!=e?e:0;var d=new mxCodec(a.ownerDocument),f=new mxGraphModel;d.decode(a,f);a=[];var d={},g={},m=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),d));if(null!=m){var t=this.createCellLookup([f.root]),m=m.slice();this.model.beginUpdate();try{if(1!=m.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<m.length;f++){var p=this.model.getChildren(this.moveCells([m[f]],b,e,!1,this.model.getRoot())[0]);
+null!=p&&(a=a.concat(p))}else a=this.moveCells(f.getChildren(m[0]),b,e,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId();if(null!=a&&(this.createCellMapping(d,t,g),this.updateCustomLinks(g,a),c)){this.isGridEnabled()&&(b=this.snap(b),e=this.snap(e));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,b-n.x,e-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},e=this.cloneCells(a,null,b),
+c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(var f=new mxCodec,g=new mxGraphModel,m=g.getChildAt(g.getRoot(),0),d=0;d<e.length;d++){g.add(m,e[d]);var t=this.view.getState(a[d]);if(null!=t){var p=this.getCellGeometry(e[d]);null!=p&&p.relative&&!this.model.isEdge(a[d])&&null==c.get(this.model.getParent(a[d]))&&(p.offset=null,p.relative=!1,p.x=t.x/t.view.scale-t.view.translate.x,p.y=t.y/t.view.scale-t.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),
e);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){if(null!=a&&this.model.getParent(a)!=this.model.getRoot()&&!this.model.isEdge(a)){var e=this.getCurrentCellStyle(a,b)[mxConstants.STYLE_SHAPE];return e==mxConstants.SHAPE_SWIMLANE||"table"==e}return!1};var q=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(a){var b=this.model.getParent(a);if(null!=b){var e=this.getCurrentCellStyle(b);if(null!=e.expand)return"0"!=e.expand}return q.apply(this,arguments)&&(null==b||
-!this.isTable(b))};var b=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,e,c,d,f,g,m,u){null==u&&(u=this.model.getParent(a),this.isTable(u)||this.isTableRow(u))&&(u=this.getCellAt(g,m,null,!0,!1));b.apply(this,[a,e,c,d,f,g,m,u])};var e=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)e.apply(this,arguments);else{var d=this.getSelectionCell(),f=null,g=[],m=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(g.push(b),
-b==d)f=g.length-1;else if(a&&null==d&&0<g.length||null!=f&&a&&g.length>f||!a&&0<f)return;for(var e=0;e<this.model.getChildCount(b);e++)m(this.model.getChildAt(b,e))});m(this.model.root);0<g.length&&(f=null!=f?mxUtils.mod(f+(a?1:-1),g.length):0,this.setSelectionCell(g[f]))}};var g=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,e,c,d,f,m){m=null!=m?m:{};if(this.isTable(d)){for(var u=[],p=0;p<a.length;p++)this.isTable(a[p])?u=u.concat(this.model.getChildCells(a[p],!0).reverse()):u.push(a[p]);
-a=u}this.model.beginUpdate();try{u=[];for(p=0;p<a.length;p++)if(null!=d&&this.isTableRow(a[p])){var n=this.model.getParent(a[p]),t=this.getCellGeometry(a[p]);this.isTable(n)&&u.push(n);if(null!=n&&null!=t&&this.isTable(n)&&this.isTable(d)&&(c||n!=d)){if(!c){var R=this.getCellGeometry(n);null!=R&&(R=R.clone(),R.height-=t.height,this.model.setGeometry(n,R))}R=this.getCellGeometry(d);null!=R&&(R=R.clone(),R.height+=t.height,this.model.setGeometry(d,R));var B=this.model.getChildCells(d,!0);if(0<B.length){var l=
+!this.isTable(b))};var b=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,e,c,d,f,g,m,t){null==t&&(t=this.model.getParent(a),this.isTable(t)||this.isTableRow(t))&&(t=this.getCellAt(g,m,null,!0,!1));b.apply(this,[a,e,c,d,f,g,m,t])};var e=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)e.apply(this,arguments);else{var d=this.getSelectionCell(),f=null,g=[],m=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(g.push(b),
+b==d)f=g.length-1;else if(a&&null==d&&0<g.length||null!=f&&a&&g.length>f||!a&&0<f)return;for(var e=0;e<this.model.getChildCount(b);e++)m(this.model.getChildAt(b,e))});m(this.model.root);0<g.length&&(f=null!=f?mxUtils.mod(f+(a?1:-1),g.length):0,this.setSelectionCell(g[f]))}};var g=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,e,c,d,f,m){m=null!=m?m:{};if(this.isTable(d)){for(var t=[],p=0;p<a.length;p++)this.isTable(a[p])?t=t.concat(this.model.getChildCells(a[p],!0).reverse()):t.push(a[p]);
+a=t}this.model.beginUpdate();try{t=[];for(p=0;p<a.length;p++)if(null!=d&&this.isTableRow(a[p])){var n=this.model.getParent(a[p]),u=this.getCellGeometry(a[p]);this.isTable(n)&&t.push(n);if(null!=n&&null!=u&&this.isTable(n)&&this.isTable(d)&&(c||n!=d)){if(!c){var R=this.getCellGeometry(n);null!=R&&(R=R.clone(),R.height-=u.height,this.model.setGeometry(n,R))}R=this.getCellGeometry(d);null!=R&&(R=R.clone(),R.height+=u.height,this.model.setGeometry(d,R));var B=this.model.getChildCells(d,!0);if(0<B.length){var l=
c?this.cloneCell(a[p]):a[p],k=this.model.getChildCells(l,!0),v=this.model.getChildCells(B[0],!0),x=v.length-k.length;if(0<x)for(var K=0;K<x;K++){var y=this.cloneCell(k[k.length-1]);null!=y&&(y.value="",this.model.add(l,y))}else if(0>x)for(K=0;K>x;K--)this.model.remove(k[k.length+K-1]);k=this.model.getChildCells(l,!0);for(K=0;K<v.length;K++){var L=this.getCellGeometry(v[K]),ia=this.getCellGeometry(k[K]);null!=L&&null!=ia&&(ia=ia.clone(),ia.width=L.width,this.model.setGeometry(k[K],ia))}}}}for(var H=
-g.apply(this,arguments),p=0;p<u.length;p++)!c&&this.model.contains(u[p])&&0==this.model.getChildCount(u[p])&&this.model.remove(u[p]);c&&this.updateCustomLinks(this.createCellMapping(m,this.createCellLookup(a)),H)}finally{this.model.endUpdate()}return H};var p=Graph.prototype.removeCells;Graph.prototype.removeCells=function(a,b){var e=[];this.model.beginUpdate();try{for(var c=0;c<a.length;c++)if(this.isTableCell(a[c])){var d=this.model.getParent(a[c]),f=this.model.getParent(d);1==this.model.getChildCount(d)&&
-1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f)&&e.push(f):this.labelChanged(a[c],"")}else{if(this.isTableRow(a[c])&&(f=this.model.getParent(a[c]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f))){for(var g=this.model.getChildCells(f,!0),m=0,u=0;u<g.length;u++)0<=mxUtils.indexOf(a,g[u])&&m++;m==g.length&&e.push(f)}e.push(a[c])}e=p.apply(this,[e,b])}finally{this.model.endUpdate()}return e};Graph.prototype.updateCustomLinks=function(a,b){for(var e=0;e<b.length;e++)null!=
+g.apply(this,arguments),p=0;p<t.length;p++)!c&&this.model.contains(t[p])&&0==this.model.getChildCount(t[p])&&this.model.remove(t[p]);c&&this.updateCustomLinks(this.createCellMapping(m,this.createCellLookup(a)),H)}finally{this.model.endUpdate()}return H};var p=Graph.prototype.removeCells;Graph.prototype.removeCells=function(a,b){var e=[];this.model.beginUpdate();try{for(var c=0;c<a.length;c++)if(this.isTableCell(a[c])){var d=this.model.getParent(a[c]),f=this.model.getParent(d);1==this.model.getChildCount(d)&&
+1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f)&&e.push(f):this.labelChanged(a[c],"")}else{if(this.isTableRow(a[c])&&(f=this.model.getParent(a[c]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f))){for(var g=this.model.getChildCells(f,!0),m=0,t=0;t<g.length;t++)0<=mxUtils.indexOf(a,g[t])&&m++;m==g.length&&e.push(f)}e.push(a[c])}e=p.apply(this,[e,b])}finally{this.model.endUpdate()}return e};Graph.prototype.updateCustomLinks=function(a,b){for(var e=0;e<b.length;e++)null!=
b[e]&&this.updateCustomLinksForCell(a,b[e])};Graph.prototype.updateCustomLinksForCell=function(a,b){};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var e=mxUtils.getValue(a.style,"points",null);if(null!=e){var c=[];try{for(var d=JSON.parse(e),e=0;e<d.length;e++){var f=d[e];c.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(wa){}return c}if(null!=a.shape&&null!=a.shape.bounds){f=a.shape.direction;
d=a.shape.bounds;e=a.shape.scale;c=d.width/e;d=d.height/e;if(f==mxConstants.DIRECTION_NORTH||f==mxConstants.DIRECTION_SOUTH)f=c,c=d,d=f;e=a.shape.getConstraints(a.style,c,d);if(null!=e)return e;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.getCurrentCellStyle(a),b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==
mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a])}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),e=0,c=0;c<b;c++){var d=this.model.getChildAt(a,c);this.model.isVertex(d)&&(d=this.getCellGeometry(d),null==d||d.relative||e++)}return 0<e||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a,b,e){for(var c=this.getCurrentCellStyle(a),d=!0,f=!0,g=0;g<b.length&&f;g++)d=d&&this.isTable(b[g]),
f=f&&this.isTableRow(b[g]);return("1"!=mxUtils.getValue(c,"part","0")||this.isContainer(a))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(a))&&!this.isTableRow(a)&&(!this.isTable(a)||f||d)};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,
arguments);if(b&&null!=a&&null!=this.layoutManager){var e=this.model.getParent(a);null!=e&&(e=this.layoutManager.getLayout(e),null!=e&&e.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a,b){var e=this.getModel(),c=[];e.beginUpdate();
-try{for(var d=0;d<a.length;d++){var f=a[d];if(e.isEdge(f)){var g=e.getTerminal(f,!0),m=e.getTerminal(f,!1);e.setTerminal(f,m,!0);e.setTerminal(f,g,!1);var u=e.getGeometry(f);if(null!=u){u=u.clone();null!=u.points&&u.points.reverse();var p=u.getTerminalPoint(!0),n=u.getTerminalPoint(!1);u.setTerminalPoint(p,!1);u.setTerminalPoint(n,!0);e.setGeometry(f,u);var t=this.view.getState(f),B=this.view.getState(g),l=this.view.getState(m);if(null!=t){var R=null!=B?this.getConnectionConstraint(t,B,!0):null,k=
-null!=l?this.getConnectionConstraint(t,l,!1):null;this.setConnectionConstraint(f,g,!0,k);this.setConnectionConstraint(f,m,!1,R)}c.push(f)}}else if(e.isVertex(f)&&(u=this.getCellGeometry(f),null!=u)){if(!this.isTable(f)&&!this.isTableRow(f)&&!this.isTableCell(f)){u=u.clone();u.x+=u.width/2-u.height/2;u.y+=u.height/2-u.width/2;var v=u.width;u.width=u.height;u.height=v;e.setGeometry(f,u)}var x=this.view.getState(f);if(null!=x){var K=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,
+try{for(var d=0;d<a.length;d++){var f=a[d];if(e.isEdge(f)){var g=e.getTerminal(f,!0),m=e.getTerminal(f,!1);e.setTerminal(f,m,!0);e.setTerminal(f,g,!1);var t=e.getGeometry(f);if(null!=t){t=t.clone();null!=t.points&&t.points.reverse();var p=t.getTerminalPoint(!0),n=t.getTerminalPoint(!1);t.setTerminalPoint(p,!1);t.setTerminalPoint(n,!0);e.setGeometry(f,t);var u=this.view.getState(f),B=this.view.getState(g),k=this.view.getState(m);if(null!=u){var l=null!=B?this.getConnectionConstraint(u,B,!0):null,R=
+null!=k?this.getConnectionConstraint(u,k,!1):null;this.setConnectionConstraint(f,g,!0,R);this.setConnectionConstraint(f,m,!1,l)}c.push(f)}}else if(e.isVertex(f)&&(t=this.getCellGeometry(f),null!=t)){if(!this.isTable(f)&&!this.isTableRow(f)&&!this.isTableCell(f)){t=t.clone();t.x+=t.width/2-t.height/2;t.y+=t.height/2-t.width/2;var v=t.width;t.width=t.height;t.height=v;e.setGeometry(f,t)}var x=this.view.getState(f);if(null!=x){var K=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,
mxConstants.DIRECTION_NORTH],y=mxUtils.getValue(x.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,K[mxUtils.mod(mxUtils.indexOf(K,y)+(b?-1:1),K.length)],[f])}c.push(f)}}}finally{e.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var m=Graph.prototype.processChange;
Graph.prototype.processChange=function(a){if(a instanceof mxGeometryChange&&(this.isTableCell(a.cell)||this.isTableRow(a.cell))&&(null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))){var b=a.cell;this.isTableCell(b)&&(b=this.model.getParent(b));this.isTableRow(b)&&(b=this.model.getParent(b));var e=this.view.getState(b);null!=e&&null!=e.shape&&(this.view.invalidate(b),e.shape.bounds=null)}m.apply(this,arguments);a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&
"object"==typeof a.cell.value&&this.invalidateDescendantsWithPlaceholders(a.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(a){a=this.model.getDescendants(a);if(0<a.length)for(var b=0;b<a.length;b++){var e=this.view.getState(a[b]);null!=e&&null!=e.shape&&null!=e.shape.stencil&&this.stencilHasPlaceholders(e.shape.stencil)?this.removeStateForCell(a[b]):this.isReplacePlaceholders(a[b])&&this.view.invalidate(a[b],!1,!1)}};Graph.prototype.replaceElement=function(a,b){for(var e=a.ownerDocument.createElement(null!=
b?b:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)e.setAttribute(attr.nodeName,attr.nodeValue);e.innerHTML=a.innerHTML;a.parentNode.replaceChild(e,a)};Graph.prototype.processElements=function(a,b){if(null!=a)for(var e=a.getElementsByTagName("*"),c=0;c<e.length;c++)b(e[c])};Graph.prototype.updateLabelElements=function(a,b,e){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var f=this.convertValueToString(a[d]);
-if(null!=f&&0<f.length){c.innerHTML=f;for(var g=c.getElementsByTagName(null!=e?e:"*"),u=0;u<g.length;u++)b(g[u]);c.innerHTML!=f&&this.cellLabelChanged(a[d],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,e){b=Graph.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&&
+if(null!=f&&0<f.length){c.innerHTML=f;for(var g=c.getElementsByTagName(null!=e?e:"*"),t=0;t<g.length;t++)b(g[t]);c.innerHTML!=f&&this.cellLabelChanged(a[d],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,e){b=Graph.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&&
d.hasAttribute(c)){this.setAttributeForCell(d,c,b);break}d=this.model.getParent(d)}var f=a.value.cloneNode(!0);f.setAttribute("label",b);b=f}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var b=new mxDictionary,e=0;e<a.length;e++)b.put(a[e],!0);for(var c=[],e=0;e<a.length;e++){var d=this.model.getParent(a[e]);null==d||b.get(d)||(b.put(d,!0),c.push(d))}for(e=0;e<c.length;e++)if(d=this.view.getState(c[e]),
null!=d&&(this.model.isEdge(d.cell)||this.model.isVertex(d.cell))&&this.isCellDeletable(d.cell)&&this.isTransparentState(d)){for(var f=!0,g=0;g<this.model.getChildCount(d.cell)&&f;g++)b.get(this.model.getChildAt(d.cell,g))||(f=!1);f&&a.push(d.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var b=[],e=0;e<a.length;e++)this.isCellDeletable(a[e])&&this.isTransparentState(this.view.getState(a[e]))&&b.push(a[e]);a=b;mxGraph.prototype.removeCellsAfterUngroup.apply(this,
arguments)};Graph.prototype.setLinkForCell=function(a,b){this.setAttributeForCell(a,"link",b)};Graph.prototype.setTooltipForCell=function(a,b){this.setAttributeForCell(a,"tooltip",b)};Graph.prototype.getAttributeForCell=function(a,b,e){a=null!=a.value&&"object"===typeof a.value?a.value.getAttribute(b):null;return null!=a?a:e};Graph.prototype.setAttributeForCell=function(a,b,e){var c;null!=a.value&&"object"==typeof a.value?c=a.value.cloneNode(!0):(c=mxUtils.createXmlDocument().createElement("UserObject"),
@@ -2590,33 +2591,33 @@ this.getInsertPoint(),c=this.snap(Math.round(Math.max(e.x,b.x/a.scale-a.translat
this.container.clientHeight/2)/this.view.scale-this.view.translate.y-a.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-a.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-a.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,b,e){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=e&&this.model.isEdge(e.cell)){c.style=
"edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var d=this.view.getRelativePoint(e,a,b);c.geometry.x=Math.round(1E4*d.x)/1E4;c.geometry.y=Math.round(d.y);c.geometry.offset=new mxPoint(0,0);var d=this.view.getPoint(e,c.geometry),f=this.view.scale;c.geometry.offset=new mxPoint(Math.round((a-d.x)/f),Math.round((b-d.y)/f))}else d=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=
40,c.geometry.height=20,c.geometry.x=Math.round(a/this.view.scale)-d.x-(null!=e?e.origin.x:0),c.geometry.y=Math.round(b/this.view.scale)-d.y-(null!=e?e.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=e?e.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};Graph.prototype.addClickHandler=function(a,b,e){var c=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");
-if(null!=a)for(var e=0;e<a.length;e++){var c=this.getAbsoluteUrl(a[e].getAttribute("href"));null!=c&&(a[e].setAttribute("rel",this.linkRelation),a[e].setAttribute("href",c),null!=b&&mxEvent.addGestureListeners(a[e],null,null,b))}});this.model.addListener(mxEvent.CHANGE,c);c();var d=this.container.style.cursor,f=this.getTolerance(),g=this,u={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var b=
+if(null!=a)for(var e=0;e<a.length;e++){var c=this.getAbsoluteUrl(a[e].getAttribute("href"));null!=c&&(a[e].setAttribute("rel",this.linkRelation),a[e].setAttribute("href",c),null!=b&&mxEvent.addGestureListeners(a[e],null,null,b))}});this.model.addListener(mxEvent.CHANGE,c);c();var d=this.container.style.cursor,f=this.getTolerance(),g=this,t={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var b=
a.sourceState;if(null==b||null==g.getLinkForCell(b.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,b,e){return null==g.getLinkForCell(a.cell)}),b=g.view.getState(a);b!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=b,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=g.container.scrollLeft;this.scrollTop=g.container.scrollTop;null==this.currentLink&&
"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(b)},mouseMove:function(a,b){if(g.isMouseDown){if(null!=this.currentLink){var e=Math.abs(this.startX-b.getGraphX()),c=Math.abs(this.startY-b.getGraphY());(e>f||c>f)&&this.clear()}}else{for(e=b.getSource();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null!=e?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(b,!0,this.currentState),(null==
-this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,c){for(var d=c.getSource(),u=c.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(u)||mxEvent.isMiddleMouseButton(u))&&
-!mxEvent.isPopupTrigger(u)||mxEvent.isTouchEvent(u))&&(null!=this.currentLink?(d=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==b||b(u,this.currentLink),mxEvent.isConsumed(u)||(u=mxEvent.isMiddleMouseButton(u)?"_blank":d?g.linkTarget:"_top",g.openLink(this.currentLink,u),c.consume())):null!=e&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-
-c.getGraphY())<f&&e(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(u);mxEvent.addListener(document,
-"mouseleave",function(a){u.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var e=0;e<a.length;e++)this.isTableCell(a[e])&&(a[e]=this.model.getParent(a[e]));a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,f=[];c.beginUpdate();try{for(var g=this.cloneCells(a,!1,null,!0),e=0;e<a.length;e++){var u=c.getParent(a[e]),m=this.moveCells([g[e]],d,d,!1)[0];f.push(m);if(b)c.add(u,g[e]);else{var p=u.getIndex(a[e]);c.add(u,g[e],
-p+1)}if(this.isTable(u)){var n=this.getCellGeometry(g[e]),t=this.getCellGeometry(u);null!=n&&null!=t&&(t=t.clone(),t.height+=n.height,c.setGeometry(u,t))}}}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,e){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),d=[],f=0;f<c.length;f++)d.push(c[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(f=
+this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,c){for(var d=c.getSource(),t=c.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(t)||mxEvent.isMiddleMouseButton(t))&&
+!mxEvent.isPopupTrigger(t)||mxEvent.isTouchEvent(t))&&(null!=this.currentLink?(d=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==b||b(t,this.currentLink),mxEvent.isConsumed(t)||(t=mxEvent.isMiddleMouseButton(t)?"_blank":d?g.linkTarget:"_top",g.openLink(this.currentLink,t),c.consume())):null!=e&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-
+c.getGraphY())<f&&e(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(t);mxEvent.addListener(document,
+"mouseleave",function(a){t.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var e=0;e<a.length;e++)this.isTableCell(a[e])&&(a[e]=this.model.getParent(a[e]));a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,f=[];c.beginUpdate();try{for(var g=this.cloneCells(a,!1,null,!0),e=0;e<a.length;e++){var t=c.getParent(a[e]),m=this.moveCells([g[e]],d,d,!1)[0];f.push(m);if(b)c.add(t,g[e]);else{var p=t.getIndex(a[e]);c.add(t,g[e],
+p+1)}if(this.isTable(t)){var n=this.getCellGeometry(g[e]),u=this.getCellGeometry(t);null!=n&&null!=u&&(u=u.clone(),u.height+=n.height,c.setGeometry(t,u))}}}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,e){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),d=[],f=0;f<c.length;f++)d.push(c[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(f=
a.length-1;0<=f;f--)if(0==f||a[f]!=d[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",e);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),e=[],c=0;c<b.length;c++)e.push(b[c]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==e.length+1)for(c=b.length-
1;0<=c;c--)if(b[c]!=e[c-1]){for(b=b[c].getElementsByTagName("a");0<b.length;){for(e=b[0].parentNode;null!=b[0].firstChild;)e.insertBefore(b[0].firstChild,b[0]);e.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),e=this.getCurrentCellStyle(a);return!this.isTableCell(a)&&!this.isTableRow(a)&&(b||"0"!=mxUtils.getValue(e,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==
-e[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var e=[],c=null,d=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var u=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,u):u,d=null!=d?Math.min(d,u):u;e.push(g)}}if(2<e.length){e.sort(function(b,e){return a?b.x-e.x:b.y-e.y});g=this.view.translate;u=this.view.scale;d=d/u-(a?g.x:g.y);c=c/u-(a?g.x:
+e[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var e=[],c=null,d=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var t=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,t):t,d=null!=d?Math.min(d,t):t;e.push(g)}}if(2<e.length){e.sort(function(b,e){return a?b.x-e.x:b.y-e.y});g=this.view.translate;t=this.view.scale;d=d/t-(a?g.x:g.y);c=c/t-(a?g.x:
g.y);this.getModel().beginUpdate();try{for(var m=(c-d)/(e.length-1),c=d,f=1;f<e.length-1;f++){var p=this.view.getState(this.model.getParent(e[f].cell)),n=this.getCellGeometry(e[f].cell),c=c+m;null!=n&&null!=p&&(n=n.clone(),a?n.x=Math.round(c-n.width/2)-p.origin.x:n.y=Math.round(c-n.height/2)-p.origin.y,this.getModel().setGeometry(e[f].cell,n))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};
-Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,e,c,d,f,g,u,m,p){var n=this.useCssTransforms;n&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;e=null!=e?e:0;d=null!=d?d:!0;f=null!=f?f:!0;g=null!=g?g:!0;var t=f||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==t)throw Error(mxResources.get("drawingEmpty"));
-var B=this.view.scale,l=mxUtils.createXmlDocument(),k=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"svg"):l.createElement("svg");null!=a&&(null!=k.style?k.style.backgroundColor=a:k.setAttribute("style","background-color:"+a));null==l.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/B;var v=Math.max(1,Math.ceil(t.width*a)+2*e)+(p?5:
-0),x=Math.max(1,Math.ceil(t.height*a)+2*e)+(p?5:0);k.setAttribute("version","1.1");k.setAttribute("width",v+"px");k.setAttribute("height",x+"px");k.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+v+" "+x);l.appendChild(k);var K=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"g"):l.createElement("g");k.appendChild(K);var y=this.createSvgCanvas(K);y.foOffset=d?-.5:0;y.textOffset=d?-.5:0;y.imageOffset=d?-.5:0;y.translate(Math.floor((e/b-t.x)/B),Math.floor((e/b-t.y)/B));var L=document.createElement("div"),
-H=y.getAlternateText;y.getAlternateText=function(a,b,e,c,d,f,g,u,m,p,aa,n,t){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(L.innerHTML=f,f=mxUtils.extractTextWithWhitespace(L.childNodes));for(var Na=Math.ceil(2*c/this.state.fontSize),B=[],l=0,k=0;(0==Na||l<Na)&&k<f.length;){var v=f.charCodeAt(k);if(10==v||13==v){if(0<l)break}else B.push(f.charAt(k)),255>v&&l++;k++}B.length<f.length&&1<f.length-B.length&&(f=mxUtils.trim(B.join(""))+"...");return f}catch(Va){return H.apply(this,
-arguments)}else return H.apply(this,arguments)};var R=this.backgroundImage;if(null!=R){b=B/b;var O=this.view.translate,A=new mxRectangle(O.x*b,O.y*b,R.width*b,R.height*b);mxUtils.intersects(t,A)&&y.image(O.x,O.y,R.width,R.height,R.src,!0)}y.scale(a);y.textEnabled=g;u=null!=u?u:this.createSvgImageExport();var q=u.drawCellState,z=u.getLinkForCellState;u.getLinkForCellState=function(a,b){var e=z.apply(this,arguments);return null==e||a.view.graph.isCustomLink(e)?null:e};u.drawCellState=function(a,b){for(var e=
-a.view.graph,c=e.isCellSelected(a.cell),d=e.model.getParent(a.cell);!f&&!c&&null!=d;)c=e.isCellSelected(d),d=e.model.getParent(d);(f||c)&&q.apply(this,arguments)};u.drawState(this.getView().getState(this.model.root),y);this.updateSvgLinks(k,m,!0);this.addForeignObjectWarning(y,k);return k}finally{n&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if(0<b.getElementsByTagName("foreignObject").length){var e=a.createElement("switch"),
+Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,e,c,d,f,g,t,m,p){var n=this.useCssTransforms;n&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;e=null!=e?e:0;d=null!=d?d:!0;f=null!=f?f:!0;g=null!=g?g:!0;var u=f||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==u)throw Error(mxResources.get("drawingEmpty"));
+var B=this.view.scale,k=mxUtils.createXmlDocument(),l=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=l.style?l.style.backgroundColor=a:l.setAttribute("style","background-color:"+a));null==k.createElementNS?(l.setAttribute("xmlns",mxConstants.NS_SVG),l.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):l.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/B;var v=Math.max(1,Math.ceil(u.width*a)+2*e)+(p?5:
+0),x=Math.max(1,Math.ceil(u.height*a)+2*e)+(p?5:0);l.setAttribute("version","1.1");l.setAttribute("width",v+"px");l.setAttribute("height",x+"px");l.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+v+" "+x);k.appendChild(l);var K=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");l.appendChild(K);var y=this.createSvgCanvas(K);y.foOffset=d?-.5:0;y.textOffset=d?-.5:0;y.imageOffset=d?-.5:0;y.translate(Math.floor((e/b-u.x)/B),Math.floor((e/b-u.y)/B));var L=document.createElement("div"),
+H=y.getAlternateText;y.getAlternateText=function(a,b,e,c,d,f,g,t,m,p,aa,n,u){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(L.innerHTML=f,f=mxUtils.extractTextWithWhitespace(L.childNodes));for(var Na=Math.ceil(2*c/this.state.fontSize),B=[],l=0,k=0;(0==Na||l<Na)&&k<f.length;){var v=f.charCodeAt(k);if(10==v||13==v){if(0<l)break}else B.push(f.charAt(k)),255>v&&l++;k++}B.length<f.length&&1<f.length-B.length&&(f=mxUtils.trim(B.join(""))+"...");return f}catch(Va){return H.apply(this,
+arguments)}else return H.apply(this,arguments)};var R=this.backgroundImage;if(null!=R){b=B/b;var O=this.view.translate,A=new mxRectangle(O.x*b,O.y*b,R.width*b,R.height*b);mxUtils.intersects(u,A)&&y.image(O.x,O.y,R.width,R.height,R.src,!0)}y.scale(a);y.textEnabled=g;t=null!=t?t:this.createSvgImageExport();var q=t.drawCellState,z=t.getLinkForCellState;t.getLinkForCellState=function(a,b){var e=z.apply(this,arguments);return null==e||a.view.graph.isCustomLink(e)?null:e};t.drawCellState=function(a,b){for(var e=
+a.view.graph,c=e.isCellSelected(a.cell),d=e.model.getParent(a.cell);!f&&!c&&null!=d;)c=e.isCellSelected(d),d=e.model.getParent(d);(f||c)&&q.apply(this,arguments)};t.drawState(this.getView().getState(this.model.root),y);this.updateSvgLinks(l,m,!0);this.addForeignObjectWarning(y,l);return l}finally{n&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if(0<b.getElementsByTagName("foreignObject").length){var e=a.createElement("switch"),
c=a.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var d=a.createElement("a");d.setAttribute("transform","translate(0,-5)");null==d.setAttributeNS||b.ownerDocument!=document&&null==document.documentMode?(d.setAttribute("xlink:href",Graph.foreignObjectWarningLink),d.setAttribute("target","_blank")):(d.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),d.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=
a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);e.appendChild(c);d.appendChild(f);e.appendChild(d);b.appendChild(e)}};Graph.prototype.updateSvgLinks=function(a,b,e){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++){var d=a[c].getAttribute("href");null==d&&(d=a[c].getAttribute("xlink:href"));null!=d&&(null!=b&&/^https?:\/\//.test(d)?a[c].setAttribute("target",
b):e&&this.isCustomLink(d)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,e){for(;null!=
a&&a.nodeName!=b;){if(a==e)return null;a=a.parentNode}return a};Graph.prototype.getParentByNames=function(a,b,e){for(;null!=a&&!(0<=mxUtils.indexOf(b,a.nodeName));){if(a==e)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var e=document.createRange();e.selectNode(a);b.removeAllRanges();b.addRange(e)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),e=
-b.createRange(),e.setEndPoint("StartToStart",a),e.select())};Graph.prototype.deleteCells=function(a,b){var e=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var d=this.model.getParent(a[c]);if(this.isTable(d)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(d);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(d,g))}}var u=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=
-u)for(e=[],c=0;c<u.length;c++)this.model.contains(u[c])&&(this.model.isVertex(u[c])||this.model.isEdge(u[c]))&&e.push(u[c])}return e};Graph.prototype.insertTableColumn=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=0;if(this.isTableCell(a))var f=e.getParent(a),c=e.getParent(f),d=mxUtils.indexOf(e.getChildCells(f,!0),a);else this.isTableRow(a)?c=e.getParent(a):a=e.getChildCells(c,!0)[0],b||(d=e.getChildCells(a,!0).length-1);for(var g=e.getChildCells(c,!0),u=Graph.minTableColumnWidth,
-f=0;f<g.length;f++){var m=e.getChildCells(g[f],!0)[d],p=e.cloneCell(m,!1),n=this.getCellGeometry(p);p.value=null;if(null!=n){var u=n.width,t=this.getCellGeometry(g[f]);null!=t&&(n.height=t.height)}e.add(g[f],p,d+(b?0:1))}var B=this.getCellGeometry(c);null!=B&&(B=B.clone(),B.width+=u,e.setGeometry(c,B))}finally{e.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=a;if(this.isTableCell(a))d=e.getParent(a),c=e.getParent(d);else if(this.isTableRow(a))c=
-e.getParent(a);else var f=e.getChildCells(c,!0),d=f[b?0:f.length-1];var g=e.getChildCells(d,!0),u=c.getIndex(d),d=e.cloneCell(d,!1);d.value=null;var m=this.getCellGeometry(d);if(null!=m){for(f=0;f<g.length;f++){a=e.cloneCell(g[f],!1);d.insert(a);a.value=null;var p=this.getCellGeometry(a);null!=p&&(p.height=m.height)}e.add(c,d,u+(b?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,e.setGeometry(c,n))}}finally{e.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=
-this.getModel();b.beginUpdate();try{var e=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(e=b.getParent(c));var d=b.getChildCells(e,!0);if(0==d.length)b.remove(e);else{this.isTableRow(c)||(c=d[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(e);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<d.length;c++){var u=b.getChildCells(d[c],!0)[g];b.remove(u);var m=this.getCellGeometry(u);null!=m&&(a=Math.max(a,m.width))}var p=this.getCellGeometry(e);
+b.createRange(),e.setEndPoint("StartToStart",a),e.select())};Graph.prototype.deleteCells=function(a,b){var e=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var d=this.model.getParent(a[c]);if(this.isTable(d)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(d);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(d,g))}}var t=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=
+t)for(e=[],c=0;c<t.length;c++)this.model.contains(t[c])&&(this.model.isVertex(t[c])||this.model.isEdge(t[c]))&&e.push(t[c])}return e};Graph.prototype.insertTableColumn=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=0;if(this.isTableCell(a))var f=e.getParent(a),c=e.getParent(f),d=mxUtils.indexOf(e.getChildCells(f,!0),a);else this.isTableRow(a)?c=e.getParent(a):a=e.getChildCells(c,!0)[0],b||(d=e.getChildCells(a,!0).length-1);for(var g=e.getChildCells(c,!0),t=Graph.minTableColumnWidth,
+f=0;f<g.length;f++){var m=e.getChildCells(g[f],!0)[d],p=e.cloneCell(m,!1),n=this.getCellGeometry(p);p.value=null;if(null!=n){var t=n.width,u=this.getCellGeometry(g[f]);null!=u&&(n.height=u.height)}e.add(g[f],p,d+(b?0:1))}var B=this.getCellGeometry(c);null!=B&&(B=B.clone(),B.width+=t,e.setGeometry(c,B))}finally{e.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=a;if(this.isTableCell(a))d=e.getParent(a),c=e.getParent(d);else if(this.isTableRow(a))c=
+e.getParent(a);else var f=e.getChildCells(c,!0),d=f[b?0:f.length-1];var g=e.getChildCells(d,!0),t=c.getIndex(d),d=e.cloneCell(d,!1);d.value=null;var m=this.getCellGeometry(d);if(null!=m){for(f=0;f<g.length;f++){a=e.cloneCell(g[f],!1);d.insert(a);a.value=null;var p=this.getCellGeometry(a);null!=p&&(p.height=m.height)}e.add(c,d,t+(b?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,e.setGeometry(c,n))}}finally{e.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=
+this.getModel();b.beginUpdate();try{var e=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(e=b.getParent(c));var d=b.getChildCells(e,!0);if(0==d.length)b.remove(e);else{this.isTableRow(c)||(c=d[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(e);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<d.length;c++){var t=b.getChildCells(d[c],!0)[g];b.remove(t);var m=this.getCellGeometry(t);null!=m&&(a=Math.max(a,m.width))}var p=this.getCellGeometry(e);
null!=p&&(p=p.clone(),p.width-=a,b.setGeometry(e,p))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var e=a,c=a;this.isTableCell(a)&&(a=c=b.getParent(a));this.isTableRow(a)&&(e=b.getParent(c));var d=b.getChildCells(e,!0);if(1>=d.length)b.remove(e);else{this.isTableRow(c)||(c=d[d.length-1]);b.remove(c);a=0;var f=this.getCellGeometry(c);null!=f&&(a=f.height);var g=this.getCellGeometry(e);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(e,
g))}}finally{b.endUpdate()}};Graph.prototype.insertRow=function(a,b){for(var e=a.tBodies[0],c=e.rows[0].cells,d=0,f=0;f<c.length;f++)var g=c[f].getAttribute("colspan"),d=d+(null!=g?parseInt(g):1);e=e.insertRow(b);for(f=0;f<d;f++)mxUtils.br(e.insertCell(-1));return e.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var e=a.tHead;if(null!=e)for(var c=0;c<e.rows.length;c++){var d=document.createElement("th");e.rows[c].appendChild(d);
mxUtils.br(d)}e=a.tBodies[0];for(c=0;c<e.rows.length;c++)d=e.rows[c].insertCell(b),mxUtils.br(d);return e.rows[0].cells[0<=b?b:e.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var e=a.tBodies[0].rows,c=0;c<e.length;c++)e[c].cells.length>b&&e[c].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var e=document.createElement("div");e.innerHTML=
@@ -2627,15 +2628,15 @@ this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,e=!
(this.popupMenuHandler.popupTrigger||!c&&!mxEvent.isMouseEvent(d.getEvent())&&(e&&null==d.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(d.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",
this.textarea)};mxCellEditor.prototype.alignText=function(a,b){var e=null!=b&&mxEvent.isShiftDown(b);if(e||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(a){e||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=
window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],e=0,c=a.rangeCount;e<c;++e)b.push(a.getRangeAt(e));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,e=a.length;b<e;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(qa){}};var v=mxCellRenderer.prototype.initializeLabel;
-mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));v.apply(this,arguments)};var t=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?t.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=
+mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));v.apply(this,arguments)};var u=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?u.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=
!1;var x=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){a=this.graph.getStartEditingCell(a,b);x.apply(this,arguments);var e=this.graph.view.getState(a);this.textarea.className=null!=e&&1==e.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var e=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(e)&&null!=
c&&c.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var y=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,e){e.originalNode=a;a=a.firstChild;for(var c=e.firstChild;null!=a&&null!=c;)b(a,
c),a=a.nextSibling,c=c.nextSibling;return e}function e(a,b){if(null!=a)if(b.originalNode!=a)c(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var d=a.nextSibling;null==b?c(a):(e(a,b),b=b.nextSibling);a=d}}function c(a){for(var b=a.firstChild;null!=b;){var e=b.nextSibling;c(b);b=e}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&
(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}y.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?e(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),e=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(b?
m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),d=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&
-mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,u=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&u.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&u.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+
-"px";this.textarea.style.textDecoration=u.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=d;this.textarea.style.padding="0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==
+mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,t=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&t.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&t.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+
+"px";this.textarea.style.textDecoration=t.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=d;this.textarea.style.padding="0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==
this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var m=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(m=mxUtils.replaceTrailingNewlines(m,"<div><br></div>"));m=this.graph.sanitizeHtml(b?m.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):m,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+
"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);
this.switchSelectionState=e;this.resize()}};var E=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var e=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*e;this.bounds.height=60*e;var c=null!=a.text?a.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,
@@ -2652,12 +2653,12 @@ b.width,this.graph.model.setGeometry(c,d)))}};var D=mxSelectionCellsHandler.prot
mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=G.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var F=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(a){var b=F.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+
this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return this.graph.isRecursiveVertexResize(a)&&!mxEvent.isControlDown(b.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,
"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var I=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return I.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):
-this.bounds};var J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var u=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||u.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
+this.bounds};var J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var t=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||t.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
function(){var a=0;this.graph.isTableRow(this.state.cell)?a=1:this.graph.isTableCell(this.state.cell)&&(a=2);return a};var K=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return K.apply(this,arguments).grow(-this.getSelectionBorderInset())};var B=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=B.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var b=this.graph,
-e=b.model,c=this.state,d=this.selectionBorder,f=this;null==a&&(a=[]);var g=b.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<g.length){for(var u=b.view.getCellStates(e.getChildCells(g[0].cell,!0)),e=0;e<u.length;e++)mxUtils.bind(this,function(e){var g=u[e],m=e<u.length-1?u[e+1]:null,p=new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=d.isDashed;p.svgStrokeTolerance++;p=new mxHandle(g,"col-resize",null,p);p.tableHandle=!0;var n=0;p.shape.node.parentNode.insertBefore(p.shape.node,
-p.shape.node.parentNode.firstChild);p.redraw=function(){if(null!=this.shape&&null!=this.state.shape){var a=b.getActualStartSize(c.cell);this.shape.stroke=0==n?mxConstants.NONE:d.stroke;this.shape.bounds.x=this.state.x+this.state.width+n*this.graph.view.scale;this.shape.bounds.width=1;this.shape.bounds.y=c.y+(e==u.length-1?0:a.y*this.graph.view.scale);this.shape.bounds.height=c.height-(e==u.length-1?0:(a.height+a.y)*this.graph.view.scale);this.shape.redraw()}};var t=!1;p.setPosition=function(a,e,c){n=
-Math.max(Graph.minTableColumnWidth-a.width,e.x-a.x-a.width);t=mxEvent.isShiftDown(c.getEvent());null==m||t||(n=Math.min((m.x+m.width-g.x-g.width)/b.view.scale-Graph.minTableColumnWidth,n))};p.execute=function(a){if(0!=n)b.setTableColumnWidth(this.state.cell,n,t);else if(!f.blockDelayedSelection){var e=b.getCellAt(a.getGraphX(),a.getGraphY())||c.cell;b.graphHandler.selectCellForEvent(e,a)}n=0};p.reset=function(){n=0};a.push(p)})(e);for(e=0;e<g.length;e++)mxUtils.bind(this,function(e){e=g[e];var u=
-new mxLine(new mxRectangle,mxConstants.NONE,1);u.isDashed=d.isDashed;u.svgStrokeTolerance++;e=new mxHandle(e,"row-resize",null,u);e.tableHandle=!0;var m=0;e.shape.node.parentNode.insertBefore(e.shape.node,e.shape.node.parentNode.firstChild);e.redraw=function(){null!=this.shape&&null!=this.state.shape&&(this.shape.stroke=0==m?mxConstants.NONE:d.stroke,this.shape.bounds.x=this.state.x,this.shape.bounds.width=this.state.width,this.shape.bounds.y=this.state.y+this.state.height+m*this.graph.view.scale,
+e=b.model,c=this.state,d=this.selectionBorder,f=this;null==a&&(a=[]);var g=b.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<g.length){for(var t=b.view.getCellStates(e.getChildCells(g[0].cell,!0)),e=0;e<t.length;e++)mxUtils.bind(this,function(e){var g=t[e],m=e<t.length-1?t[e+1]:null,p=new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=d.isDashed;p.svgStrokeTolerance++;p=new mxHandle(g,"col-resize",null,p);p.tableHandle=!0;var n=0;p.shape.node.parentNode.insertBefore(p.shape.node,
+p.shape.node.parentNode.firstChild);p.redraw=function(){if(null!=this.shape&&null!=this.state.shape){var a=b.getActualStartSize(c.cell);this.shape.stroke=0==n?mxConstants.NONE:d.stroke;this.shape.bounds.x=this.state.x+this.state.width+n*this.graph.view.scale;this.shape.bounds.width=1;this.shape.bounds.y=c.y+(e==t.length-1?0:a.y*this.graph.view.scale);this.shape.bounds.height=c.height-(e==t.length-1?0:(a.height+a.y)*this.graph.view.scale);this.shape.redraw()}};var u=!1;p.setPosition=function(a,e,c){n=
+Math.max(Graph.minTableColumnWidth-a.width,e.x-a.x-a.width);u=mxEvent.isShiftDown(c.getEvent());null==m||u||(n=Math.min((m.x+m.width-g.x-g.width)/b.view.scale-Graph.minTableColumnWidth,n))};p.execute=function(a){if(0!=n)b.setTableColumnWidth(this.state.cell,n,u);else if(!f.blockDelayedSelection){var e=b.getCellAt(a.getGraphX(),a.getGraphY())||c.cell;b.graphHandler.selectCellForEvent(e,a)}n=0};p.reset=function(){n=0};a.push(p)})(e);for(e=0;e<g.length;e++)mxUtils.bind(this,function(e){e=g[e];var t=
+new mxLine(new mxRectangle,mxConstants.NONE,1);t.isDashed=d.isDashed;t.svgStrokeTolerance++;e=new mxHandle(e,"row-resize",null,t);e.tableHandle=!0;var m=0;e.shape.node.parentNode.insertBefore(e.shape.node,e.shape.node.parentNode.firstChild);e.redraw=function(){null!=this.shape&&null!=this.state.shape&&(this.shape.stroke=0==m?mxConstants.NONE:d.stroke,this.shape.bounds.x=this.state.x,this.shape.bounds.width=this.state.width,this.shape.bounds.y=this.state.y+this.state.height+m*this.graph.view.scale,
this.shape.bounds.height=1,this.shape.redraw())};e.setPosition=function(a,b,e){m=Math.max(Graph.minTableRowHeight-a.height,b.y-a.y-a.height)};e.execute=function(a){if(0!=m)b.setTableRowHeight(this.state.cell,m,!mxEvent.isShiftDown(a.getEvent()));else if(!f.blockDelayedSelection){var e=b.getCellAt(a.getGraphX(),a.getGraphY())||c.cell;b.graphHandler.selectCellForEvent(e,a)}m=0};e.reset=function(){m=0};a.push(e)})(e)}}return null!=a?a.reverse():null};var L=mxVertexHandler.prototype.setHandlesVisible;
mxVertexHandler.prototype.setHandlesVisible=function(a){L.apply(this,arguments);if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.visibility=a?"":"hidden";if(null!=this.cornerHandles)for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.visibility=a?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var a=this.graph.model;if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);
this.moveHandles=null}this.moveHandles=[];for(b=0;b<a.getChildCount(this.state.cell);b++)mxUtils.bind(this,function(b){if(null!=b&&a.isVertex(b.cell)){var e=mxUtils.createImage(Editor.rowMoveImage);e.style.position="absolute";e.style.cursor="pointer";e.style.width="7px";e.style.height="4px";e.style.padding="4px 2px 4px 2px";e.rowState=b;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(a){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(a)&&this.graph.isCellSelected(b.cell)||
@@ -2681,8 +2682,8 @@ function(a){return!mxEvent.isShiftDown(a.getEvent())};if(Graph.touchStyle){if(mx
function(a){var b=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(b)||mxEvent.isPopupTrigger(b)&&(null==a.getState()||mxEvent.isControlDown(b)||mxEvent.isShiftDown(b))};var fa=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,b){fa.apply(this,arguments);mxEvent.isTouchEvent(b.getEvent())&&this.graph.isCellSelected(b.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var b=
a.getEvent();return mxEvent.isLeftMouseButton(b)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b))||this.usePopupTrigger&&mxEvent.isPopupTrigger(b)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&
(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(a,b){if(this.cancelled)this.cancelled=!1,b.consume();else{var e=null!=this.div&&"none"!=this.div.style.display,c=null,d=null,f=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(c=this.first.x,d=this.first.y,f=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-d)/this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(f=this.graph.snap(f),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(f)<
-this.graph.tolerance&&(f=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(e){if(mxEvent.isAltDown(b.getEvent())&&this.graph.isToggleEvent(b.getEvent())){var f=new mxRectangle(this.x,this.y,this.width,this.height),u=this.graph.getCells(f.x,f.y,f.width,f.height);this.graph.removeSelectionCells(u)}else if(this.isSpaceEvent(b)){this.graph.model.beginUpdate();try{for(u=this.graph.getCellsBeyond(c,d,this.graph.getDefaultParent(),!0,!0),e=0;e<u.length;e++)if(this.graph.isCellMovable(u[e])){var m=
-this.graph.view.getState(u[e]),p=this.graph.getCellGeometry(u[e]);null!=m&&null!=p&&(p=p.clone(),p.translate(f,g),this.graph.model.setGeometry(u[e],p))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,b.getEvent());b.consume()}}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var e=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);e.x-=c.x;e.y-=c.y;
+this.graph.tolerance&&(f=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(e){if(mxEvent.isAltDown(b.getEvent())&&this.graph.isToggleEvent(b.getEvent())){var f=new mxRectangle(this.x,this.y,this.width,this.height),t=this.graph.getCells(f.x,f.y,f.width,f.height);this.graph.removeSelectionCells(t)}else if(this.isSpaceEvent(b)){this.graph.model.beginUpdate();try{for(t=this.graph.getCellsBeyond(c,d,this.graph.getDefaultParent(),!0,!0),e=0;e<t.length;e++)if(this.graph.isCellMovable(t[e])){var m=
+this.graph.view.getState(t[e]),p=this.graph.getCellGeometry(t[e]);null!=m&&null!=p&&(p=p.clone(),p.translate(f,g),this.graph.model.setGeometry(t[e],p))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,b.getEvent());b.consume()}}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var e=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);e.x-=c.x;e.y-=c.y;
var c=b.getX()+e.x,e=b.getY()+e.y,d=this.first.x-c,f=this.first.y-e,g=this.graph.tolerance;if(null!=this.div||Math.abs(d)>g||Math.abs(f)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,e),this.isSpaceEvent(b)?(c=this.x+this.width,e=this.y+this.height,d=this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(this.width=this.graph.snap(this.width/d)*d,this.height=this.graph.snap(this.height/d)*d,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=e-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
@@ -2711,15 +2712,15 @@ null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&thi
this.moveHandles[a]&&null!=this.moveHandles[a].parentNode&&this.moveHandles[a].parentNode.removeChild(this.moveHandles[a]);this.moveHandles=null}if(null!=this.cornerHandles){for(a=0;a<this.cornerHandles.length;a++)null!=this.cornerHandles[a]&&null!=this.cornerHandles[a].node&&null!=this.cornerHandles[a].node.parentNode&&this.cornerHandles[a].node.parentNode.removeChild(this.cornerHandles[a].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),
this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var oa=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(oa.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&
null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+Editor.hintOffset)+"px"}};var W=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){W.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var Z=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=
-function(){Z.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function f(){mxActor.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function q(){mxActor.call(this)}function b(){mxCylinder.call(this)}function e(){mxActor.call(this)}function g(){mxActor.call(this)}function p(){mxActor.call(this)}function m(){mxActor.call(this)}function n(){mxActor.call(this)}function v(){mxActor.call(this)}function t(){mxActor.call(this)}
+function(){Z.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function f(){mxActor.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function q(){mxActor.call(this)}function b(){mxCylinder.call(this)}function e(){mxActor.call(this)}function g(){mxActor.call(this)}function p(){mxActor.call(this)}function m(){mxActor.call(this)}function n(){mxActor.call(this)}function v(){mxActor.call(this)}function u(){mxActor.call(this)}
function x(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,x.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,x.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,x.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,x.prototype.quadTo);this.originalCurveTo=
this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,x.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,x.prototype.arcTo)}function y(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function z(){mxActor.call(this)}function C(){mxActor.call(this)}function A(){mxActor.call(this)}function D(){mxRectangleShape.call(this)}function G(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function I(){mxShape.call(this)}function J(){mxShape.call(this)}
-function u(){mxEllipse.call(this)}function K(){mxShape.call(this)}function B(){mxShape.call(this)}function L(){mxRectangleShape.call(this)}function O(){mxShape.call(this)}function H(){mxShape.call(this)}function S(){mxShape.call(this)}function fa(){mxShape.call(this)}function ga(){mxShape.call(this)}function ba(){mxCylinder.call(this)}function Y(){mxCylinder.call(this)}function X(){mxRectangleShape.call(this)}function ca(){mxDoubleEllipse.call(this)}function ha(){mxDoubleEllipse.call(this)}function ea(){mxArrowConnector.call(this);
+function t(){mxEllipse.call(this)}function K(){mxShape.call(this)}function B(){mxShape.call(this)}function L(){mxRectangleShape.call(this)}function O(){mxShape.call(this)}function H(){mxShape.call(this)}function S(){mxShape.call(this)}function fa(){mxShape.call(this)}function ga(){mxShape.call(this)}function ba(){mxCylinder.call(this)}function Y(){mxCylinder.call(this)}function X(){mxRectangleShape.call(this)}function ca(){mxDoubleEllipse.call(this)}function ha(){mxDoubleEllipse.call(this)}function ea(){mxArrowConnector.call(this);
this.spacing=0}function U(){mxArrowConnector.call(this);this.spacing=0}function da(){mxActor.call(this)}function Q(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function la(){mxActor.call(this)}function P(){mxActor.call(this)}function T(){mxActor.call(this)}function ja(){mxActor.call(this)}function sa(){mxActor.call(this)}function N(){mxActor.call(this)}function oa(){mxActor.call(this)}function W(){mxActor.call(this)}function Z(){mxActor.call(this)}function R(){mxEllipse.call(this)}
-function ia(){mxEllipse.call(this)}function ka(){mxEllipse.call(this)}function qa(){mxRhombus.call(this)}function ra(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function xa(){mxActor.call(this)}function ya(){mxActor.call(this)}function ma(){mxActor.call(this)}function ta(){mxConnector.call(this)}function Ba(a,b,e,c,d,f,g,u,m,p){g+=m;var aa=c.clone();c.x-=d*(2*g+m);c.y-=f*(2*g+m);d*=g+m;f*=g+m;return function(){a.ellipse(aa.x-
+function ia(){mxEllipse.call(this)}function ka(){mxEllipse.call(this)}function qa(){mxRhombus.call(this)}function ra(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function xa(){mxActor.call(this)}function ya(){mxActor.call(this)}function ma(){mxActor.call(this)}function ta(){mxConnector.call(this)}function Ba(a,b,e,c,d,f,g,t,m,p){g+=m;var aa=c.clone();c.x-=d*(2*g+m);c.y-=f*(2*g+m);d*=g+m;f*=g+m;return function(){a.ellipse(aa.x-
d-g,aa.y-f-g,2*g,2*g);p?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxSwimlane);a.prototype.getLabelBounds=function(a){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};a.prototype.paintVertexShape=function(a,b,e,c,d){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),a.translate(-b,-e));this.paintForeground(a,
b,e,c,d)};a.prototype.paintForeground=function(a,b,e,c,d){if(null!=this.state){var f=this.flipH,g=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var aa=f,f=g,g=aa;a.rotate(-this.getShapeRotation(),f,g,b+c/2,e+d/2);s=this.scale;b=this.bounds.x/s;e=this.bounds.y/s;c=this.bounds.width/s;d=this.bounds.height/s;this.paintTableForeground(a,b,e,c,d)}};a.prototype.paintTableForeground=function(a,b,e,c,d){var f=this.state.view.graph,g=f.getActualStartSize(this.state.cell),
-aa=f.model.getChildCells(this.state.cell,!0);if(0<aa.length){var u="0"!=mxUtils.getValue(this.state.style,"rowLines","1"),m="0"!=mxUtils.getValue(this.state.style,"columnLines","1");if(u)for(u=1;u<aa.length;u++){var p=f.getCellGeometry(aa[u]);null!=p&&(a.begin(),a.moveTo(b+g.x,e+p.y),a.lineTo(b+c-g.width,e+p.y),a.end(),a.stroke())}if(m)for(c=f.model.getChildCells(aa[0],!0),u=1;u<c.length;u++)p=f.getCellGeometry(c[u]),null!=p&&(a.begin(),a.moveTo(b+p.x+g.x,e+g.y),a.lineTo(b+p.x+g.x,e+d-g.height),a.end(),
+aa=f.model.getChildCells(this.state.cell,!0);if(0<aa.length){var t="0"!=mxUtils.getValue(this.state.style,"rowLines","1"),m="0"!=mxUtils.getValue(this.state.style,"columnLines","1");if(t)for(t=1;t<aa.length;t++){var p=f.getCellGeometry(aa[t]);null!=p&&(a.begin(),a.moveTo(b+g.x,e+p.y),a.lineTo(b+c-g.width,e+p.y),a.end(),a.stroke())}if(m)for(c=f.model.getChildCells(aa[0],!0),t=1;t<c.length;t++)p=f.getCellGeometry(c[t]),null!=p&&(a.begin(),a.moveTo(b+p.x+g.x,e+g.y),a.lineTo(b+p.x+g.x,e+d-g.height),a.end(),
a.stroke())}};mxCellRenderer.registerShape("table",a);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.darkOpacity=0;c.prototype.darkOpacity2=0;c.prototype.paintVertexShape=function(a,b,e,c,d){var f=Math.max(0,Math.min(c,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),aa=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));
a.translate(b,e);a.begin();a.moveTo(0,0);a.lineTo(c-f,0);a.lineTo(c,f);a.lineTo(c,d);a.lineTo(f,d);a.lineTo(0,d-f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-f,0),a.lineTo(c,f),a.lineTo(f,f),a.close(),a.fill()),0!=aa&&(a.setFillAlpha(Math.abs(aa)),a.setFillColor(0>aa?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(f,f),a.lineTo(f,d),a.lineTo(0,d-
f),a.close(),a.fill()),a.begin(),a.moveTo(f,d),a.lineTo(f,f),a.lineTo(0,0),a.moveTo(f,f),a.lineTo(c,f),a.end(),a.stroke())};c.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",c);var ua=Math.tan(mxUtils.toRadians(30)),na=(.5-ua)/2;mxUtils.extend(f,mxActor);f.prototype.size=20;f.prototype.redrawPath=function(a,b,e,c,d){b=
@@ -2736,10 +2737,10 @@ a.end()};mxCellRenderer.registerShape("card",e);mxUtils.extend(g,mxActor);g.prot
d?c*Math.max(0,Math.min(1,d)):Ia.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.isRoundable=function(){return!0};m.prototype.redrawPath=function(a,b,e,c,d){b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));
e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(b,0),new mxPoint(c,0),new mxPoint(c-b,d)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("parallelogram",m);mxUtils.extend(n,mxActor);n.prototype.size=.2;n.prototype.isRoundable=function(){return!0};n.prototype.redrawPath=function(a,b,e,c,d){b=c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,d)],this.isRounded,e,!0)};mxCellRenderer.registerShape("trapezoid",n);mxUtils.extend(v,mxActor);v.prototype.size=.5;v.prototype.redrawPath=function(a,b,e,c,d){a.setFillColor(null);b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,
-[new mxPoint(c,0),new mxPoint(b,0),new mxPoint(b,d/2),new mxPoint(0,d/2),new mxPoint(b,d/2),new mxPoint(b,d),new mxPoint(c,d)],this.isRounded,e,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",v);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(a,b,e,c,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=c/5;a.rect(0,0,b,d);a.fillAndStroke();a.rect(2*b,0,b,d);a.fillAndStroke();a.rect(4*b,0,b,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",t);x.prototype.moveTo=
+[new mxPoint(c,0),new mxPoint(b,0),new mxPoint(b,d/2),new mxPoint(0,d/2),new mxPoint(b,d/2),new mxPoint(b,d),new mxPoint(c,d)],this.isRounded,e,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",v);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,b,e,c,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=c/5;a.rect(0,0,b,d);a.fillAndStroke();a.rect(2*b,0,b,d);a.fillAndStroke();a.rect(4*b,0,b,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);x.prototype.moveTo=
function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};x.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};x.prototype.quadTo=function(a,b,e,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=c};x.prototype.curveTo=function(a,b,e,c,d,f){this.originalCurveTo.apply(this.canvas,
arguments);this.lastX=d;this.lastY=f};x.prototype.arcTo=function(a,b,e,c,d,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};x.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var e=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),d=Math.abs(b-this.lastY),f=Math.sqrt(c*c+d*d);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),aa=this.defaultVariation;
-5>g&&(g=5,aa/=3);for(var u=e(a-this.lastX)*c/g,e=e(b-this.lastY)*d/g,c=c/f,d=d/f,f=0;f<g;f++){var m=(Math.random()-.5)*aa;this.originalLineTo.call(this.canvas,u*f+this.lastX-m*d,e*f+this.lastY-m*c)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};x.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;
+5>g&&(g=5,aa/=3);for(var t=e(a-this.lastX)*c/g,e=e(b-this.lastY)*d/g,c=c/f,d=d/f,f=0;f<g;f++){var m=(Math.random()-.5)*aa;this.originalLineTo.call(this.canvas,t*f+this.lastX-m*d,e*f+this.lastY-m*c)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};x.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;
this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Ja=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(a){Ja.apply(this,arguments);null==a.handJiggle&&(a.handJiggle=this.createHandJiggle(a))};var Pa=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(a){Pa.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxShape.prototype.createComicCanvas=function(a){return new x(a,
mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var Qa=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?
"1":"0"))&&Qa.apply(this,arguments)};var Ra=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,e,c,d){if(null==a.handJiggle||a.handJiggle.constructor!=x)Ra.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),
@@ -2748,53 +2749,54 @@ e,b+f,e)):(a.moveTo(b,e),a.lineTo(b+c,e),a.lineTo(b+c,e+d),a.lineTo(b,e+d),a.lin
this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,e=a.height;a=new mxRectangle(a.x,a.y,b,e);var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(b*d,e*d));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};y.prototype.paintForeground=function(a,
b,e,c,d){var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*g,d*g));f=Math.round(f);a.begin();a.moveTo(b+f,e);a.lineTo(b+f,e+d);a.moveTo(b+c-f,e);a.lineTo(b+c-f,e+d);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",y);mxUtils.extend(E,mxRectangleShape);
E.prototype.paintBackground=function(a,b,e,c,d){a.setFillColor(mxConstants.NONE);a.rect(b,e,c,d);a.fill()};E.prototype.paintForeground=function(a,b,e,c,d){};mxCellRenderer.registerShape("transparent",E);mxUtils.extend(z,mxHexagon);z.prototype.size=30;z.prototype.position=.5;z.prototype.position2=.5;z.prototype.base=20;z.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};z.prototype.isRoundable=function(){return!0};
-z.prototype.redrawPath=function(a,b,e,c,d){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),u=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,
-[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d-e),new mxPoint(Math.min(c,f+u),d-e),new mxPoint(g,d),new mxPoint(Math.max(0,f),d-e),new mxPoint(0,d-e)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",z);mxUtils.extend(C,mxActor);C.prototype.size=.2;C.prototype.fixedSize=20;C.prototype.isRoundable=function(){return!0};C.prototype.redrawPath=function(a,b,e,c,d){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",
-this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(0,d),new mxPoint(b,d/2)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("step",C);mxUtils.extend(A,mxHexagon);A.prototype.size=.25;A.prototype.isRoundable=function(){return!0};A.prototype.redrawPath=
-function(a,b,e,c,d){b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.5*d),new mxPoint(c-b,d),new mxPoint(b,d),new mxPoint(0,.5*d)],this.isRounded,e,!0)};mxCellRenderer.registerShape("hexagon",A);mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.paintForeground=function(a,
-b,e,c,d){var f=Math.min(c/5,d/5)+1;a.begin();a.moveTo(b+c/2,e+f);a.lineTo(b+c/2,e+d-f);a.moveTo(b+f,e+d/2);a.lineTo(b+c-f,e+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",D);var La=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,e,c,d){La.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&(a.setShadow(!1),La.apply(this,[a,b,e,c,d]))}};mxUtils.extend(G,mxRectangleShape);G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};G.prototype.paintForeground=function(a,b,e,c,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
-f]];if(null!=g){var u=this.style["symbol"+f+"Align"],m=this.style["symbol"+f+"VerticalAlign"],p=this.style["symbol"+f+"Width"],aa=this.style["symbol"+f+"Height"],n=this.style["symbol"+f+"Spacing"]||0,t=this.style["symbol"+f+"VSpacing"]||n,B=this.style["symbol"+f+"ArcSpacing"];null!=B&&(B*=this.getArcSize(c+this.strokewidth,d+this.strokewidth),n+=B,t+=B);var B=b,l=e,B=u==mxConstants.ALIGN_CENTER?B+(c-p)/2:u==mxConstants.ALIGN_RIGHT?B+(c-p-n):B+n,l=m==mxConstants.ALIGN_MIDDLE?l+(d-aa)/2:m==mxConstants.ALIGN_BOTTOM?
-l+(d-aa-t):l+t;a.save();u=new g;u.style=this.style;g.prototype.paintVertexShape.call(u,a,B,l,p,aa);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",G);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,e,c,d,f){f?(a.moveTo(0,0),a.lineTo(c/2,d/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",F);mxUtils.extend(I,mxShape);
-I.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.ellipse(c/4,0,c/2,d/4);a.fillAndStroke();a.begin();a.moveTo(c/2,d/4);a.lineTo(c/2,2*d/3);a.moveTo(c/2,d/3);a.lineTo(0,d/3);a.moveTo(c/2,d/3);a.lineTo(c,d/3);a.moveTo(c/2,2*d/3);a.lineTo(0,d);a.moveTo(c/2,2*d/3);a.lineTo(c,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",I);mxUtils.extend(J,mxShape);J.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};J.prototype.paintBackground=function(a,
-b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(c/6,d/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",J);mxUtils.extend(u,mxEllipse);u.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,e+d);a.lineTo(b+7*c/8,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",u);mxUtils.extend(K,
-mxShape);K.prototype.paintVertexShape=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(c,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(c,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(B,mxShape);B.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};B.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,d/8,c,7*d/8);a.fillAndStroke()};
-B.prototype.paintForeground=function(a,b,e,c,d){a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",B);mxUtils.extend(L,mxRectangleShape);L.prototype.size=40;L.prototype.isHtmlAllowed=function(){return!1};L.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};L.prototype.paintBackground=function(a,b,e,c,
-d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,e,c,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=L&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,e,c,f),a.restore()));f<d&&(a.setDashed(!0),a.begin(),a.moveTo(b+c/2,e+f),a.lineTo(b+c/2,e+d),a.end(),a.stroke())};L.prototype.paintForeground=function(a,
-b,e,c,d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,e,c,Math.min(d,f))};mxCellRenderer.registerShape("umlLifeline",L);mxUtils.extend(O,mxShape);O.prototype.width=60;O.prototype.height=30;O.prototype.corner=10;O.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
-"height",this.height)*this.scale))};O.prototype.paintBackground=function(a,b,e,c,d){var f=this.corner,g=Math.min(c,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),u=Math.min(d,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),m=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);m!=mxConstants.NONE&&(a.setFillColor(m),a.rect(b,e,c,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
-mxConstants.NONE?(this.getGradientBounds(a,b,e,c,d),a.setGradient(this.fill,this.gradient,b,e,c,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,e);a.lineTo(b+g,e);a.lineTo(b+g,e+Math.max(0,u-1.5*f));a.lineTo(b+Math.max(0,g-f),e+u);a.lineTo(b,e+u);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,e);a.lineTo(b+c,e);a.lineTo(b+c,e+d);a.lineTo(b,e+d);a.lineTo(b,e+u);a.stroke()};mxCellRenderer.registerShape("umlFrame",O);mxPerimeter.LifelinePerimeter=function(a,b,e,c){c=L.prototype.size;
-null!=b&&(c=mxUtils.getValue(b.style,"size",c)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;e.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+c,e.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,e,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
-mxPerimeter.BackbonePerimeter=function(a,b,e,c){c=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(c+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return e.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,e.y)));e.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,e.x)),
-a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,e,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",z.prototype.size))*b.view.scale))),b.style),b,e,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,c){var d=m.prototype.size;
-null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,u=a.width,p=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=p*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+u,g+d),new mxPoint(f+u,g+p),new mxPoint(f,g+p-d),new mxPoint(f,g)]):(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+u,g),new mxPoint(f+u-d,g+p),new mxPoint(f,
-g+p),new mxPoint(f+d,g)]);p=a.getCenterX();a=a.getCenterY();a=new mxPoint(p,a);c&&(e.x<f||e.x>f+u?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,e,c){var d=n.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,u=a.width,m=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
-b==mxConstants.DIRECTION_EAST?(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+u-d,g),new mxPoint(f+u,g+m),new mxPoint(f,g+m),new mxPoint(f+d,g)]):b==mxConstants.DIRECTION_WEST?(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+u,g),new mxPoint(f+u-d,g+m),new mxPoint(f+d,g+m),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g+d),new mxPoint(f+u,g),new mxPoint(f+u,g+m),new mxPoint(f,g+m-d),new mxPoint(f,g+d)]):(d=m*Math.max(0,
-Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+u,g+d),new mxPoint(f+u,g+m-d),new mxPoint(f,g+m),new mxPoint(f,g)]);m=a.getCenterX();a=a.getCenterY();a=new mxPoint(m,a);c&&(e.x<f||e.x>f+u?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,e,c){var d="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=d?C.prototype.fixedSize:C.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,
-"size",f));d&&(f*=b.view.scale);var g=a.x,u=a.y,m=a.width,p=a.height,n=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),u=[new mxPoint(g,u),new mxPoint(g+m-d,u),new mxPoint(g+m,a),new mxPoint(g+m-d,u+p),new mxPoint(g,u+p),new mxPoint(g+d,a),new mxPoint(g,u)]):b==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(m,
-f)):m*Math.max(0,Math.min(1,f)),u=[new mxPoint(g+d,u),new mxPoint(g+m,u),new mxPoint(g+m-d,a),new mxPoint(g+m,u+p),new mxPoint(g+d,u+p),new mxPoint(g,a),new mxPoint(g+d,u)]):b==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),u=[new mxPoint(g,u+d),new mxPoint(n,u),new mxPoint(g+m,u+d),new mxPoint(g+m,u+p),new mxPoint(n,u+p-d),new mxPoint(g,u+p),new mxPoint(g,u+d)]):(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),u=[new mxPoint(g,u),new mxPoint(n,u+
-d),new mxPoint(g+m,u),new mxPoint(g+m,u+p-d),new mxPoint(n,u+p),new mxPoint(g,u+p-d),new mxPoint(g,u)]);n=new mxPoint(n,a);c&&(e.x<g||e.x>g+m?n.y=e.y:n.x=e.x);return mxUtils.getPerimeterPoint(u,n,e)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,e,c){var d=A.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,u=a.width,m=a.height,p=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(p,g),new mxPoint(f+u,g+d),new mxPoint(f+u,g+m-d),new mxPoint(p,g+m),new mxPoint(f,g+m-d),new mxPoint(f,g+d),new mxPoint(p,g)]):(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+u-d,g),new mxPoint(f+u,a),new mxPoint(f+u-d,g+m),new mxPoint(f+d,g+m),new mxPoint(f,a),new mxPoint(f+d,g)]);p=new mxPoint(p,a);c&&(e.x<f||e.x>f+
-u?p.y=e.y:p.x=e.x);return mxUtils.getPerimeterPoint(g,p,e)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(H,mxShape);H.prototype.size=10;H.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,e);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",H);mxUtils.extend(S,mxShape);S.prototype.size=
-10;S.prototype.inset=2;S.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,e);a.begin();a.moveTo(c/2,f+g);a.lineTo(c/2,d);a.end();a.stroke();a.begin();a.moveTo((c-f)/2-g,f/2);a.quadTo((c-f)/2-g,f+g,c/2,f+g);a.quadTo((c+f)/2+g,f+g,(c+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",S);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=
-function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",fa);mxUtils.extend(ga,mxShape);ga.prototype.inset=2;ga.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,e);a.ellipse(0,f,c-2*f,d-2*f);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",
-ga);mxUtils.extend(ba,mxCylinder);ba.prototype.jettyWidth=20;ba.prototype.jettyHeight=10;ba.prototype.redrawPath=function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,u=Math.min(b,d-b),m=Math.min(u+2*b,d-b);f?(a.moveTo(e,u),a.lineTo(g,u),a.lineTo(g,u+b),a.lineTo(e,u+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,
-d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,u+b),a.lineTo(0,u+b),a.lineTo(0,u),a.lineTo(e,u),a.close());a.end()};mxCellRenderer.registerShape("module",ba);mxUtils.extend(Y,mxCylinder);Y.prototype.jettyWidth=32;Y.prototype.jettyHeight=12;Y.prototype.redrawPath=function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,u=.3*d-
-b/2,m=.7*d-b/2;f?(a.moveTo(e,u),a.lineTo(g,u),a.lineTo(g,u+b),a.lineTo(e,u+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,u+b),a.lineTo(0,u+b),a.lineTo(0,u),a.lineTo(e,u),a.close());a.end()};mxCellRenderer.registerShape("component",Y);mxUtils.extend(X,mxRectangleShape);X.prototype.paintForeground=function(a,b,e,c,d){var f=c/2,g=d/2,u=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(b+f,e),new mxPoint(b+c,e+g),new mxPoint(b+f,e+d),new mxPoint(b,e+g)],this.isRounded,u,!0);a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",X);mxUtils.extend(ca,mxDoubleEllipse);ca.prototype.outerStroke=!0;ca.prototype.paintVertexShape=function(a,b,e,c,d){var f=Math.min(4,Math.min(c/5,d/5));0<c&&0<d&&(a.ellipse(b+f,e+f,c-2*f,d-2*
-f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,e,c,d),a.stroke())};mxCellRenderer.registerShape("endState",ca);mxUtils.extend(ha,ca);ha.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ha);mxUtils.extend(ea,mxArrowConnector);ea.prototype.defaultWidth=4;ea.prototype.isOpenEnded=function(){return!0};ea.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ea.prototype.isArrowRounded=function(){return this.isRounded};
-mxCellRenderer.registerShape("link",ea);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=10;U.prototype.defaultArrowWidth=20;U.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};U.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};U.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+
-Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",U);mxUtils.extend(da,mxActor);da.prototype.size=30;da.prototype.isRoundable=function(){return!0};da.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(0,b),new mxPoint(c,0),new mxPoint(c,d)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("manualInput",
-da);mxUtils.extend(Q,mxRectangleShape);Q.prototype.dx=20;Q.prototype.dy=20;Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.paintForeground=function(a,b,e,c,d){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*g,d*g));g=Math.max(f,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(d,
-parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,e+f);a.lineTo(b+c,e+f);a.end();a.stroke();a.begin();a.moveTo(b+g,e);a.lineTo(b+g,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",Q);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,
-"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(b,e),new mxPoint(b,d),new mxPoint(0,d)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",M);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(c,0);a.lineTo(c,d);a.end();a.moveTo(0,d/2);a.lineTo(c,d/2);a.end()};mxCellRenderer.registerShape("crossbar",
-la);mxUtils.extend(P,mxActor);P.prototype.dx=20;P.prototype.dy=20;P.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint((c+b)/
-2,e),new mxPoint((c+b)/2,d),new mxPoint((c-b)/2,d),new mxPoint((c-b)/2,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",P);mxUtils.extend(T,mxActor);T.prototype.arrowWidth=.3;T.prototype.arrowSize=.2;T.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",T);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",T.prototype.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"arrowSize",T.prototype.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(b,0),new mxPoint(b,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(b,f),new mxPoint(b,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ja);mxUtils.extend(sa,mxActor);sa.prototype.size=.1;sa.prototype.redrawPath=function(a,
-b,e,c,d){b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(c,0);a.quadTo(c-2*b,d/2,c,d);a.lineTo(b,d);a.quadTo(b-2*b,d/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",sa);mxUtils.extend(N,mxActor);N.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.close();a.end()};mxCellRenderer.registerShape("or",N);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,
-0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.quadTo(c/2,d/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",oa);mxUtils.extend(W,mxActor);W.prototype.size=20;W.prototype.isRoundable=function(){return!0};W.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(c/2,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.8*b),new mxPoint(c,
+z.prototype.redrawPath=function(a,b,e,c,d){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),t=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,
+[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d-e),new mxPoint(Math.min(c,f+t),d-e),new mxPoint(g,d),new mxPoint(Math.max(0,f),d-e),new mxPoint(0,d-e)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",z);mxUtils.extend(C,mxActor);C.prototype.size=.2;C.prototype.fixedSize=20;C.prototype.isRoundable=function(){return!0};C.prototype.redrawPath=function(a,b,e,c,d){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",
+this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(0,d),new mxPoint(b,d/2)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("step",C);mxUtils.extend(A,mxHexagon);A.prototype.size=.25;A.prototype.fixedSize=20;A.prototype.isRoundable=function(){return!0};
+A.prototype.redrawPath=function(a,b,e,c,d){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.5*d),new mxPoint(c-b,d),new mxPoint(b,d),new mxPoint(0,.5*d)],this.isRounded,e,!0)};
+mxCellRenderer.registerShape("hexagon",A);mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.paintForeground=function(a,b,e,c,d){var f=Math.min(c/5,d/5)+1;a.begin();a.moveTo(b+c/2,e+f);a.lineTo(b+c/2,e+d-f);a.moveTo(b+f,e+d/2);a.lineTo(b+c-f,e+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",D);var La=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==
+this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,e,c,d){La.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&(a.setShadow(!1),La.apply(this,[a,b,e,c,d]))}};mxUtils.extend(G,
+mxRectangleShape);G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};G.prototype.paintForeground=function(a,b,e,c,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=g){var t=this.style["symbol"+f+"Align"],m=this.style["symbol"+f+"VerticalAlign"],p=this.style["symbol"+f+"Width"],aa=this.style["symbol"+f+"Height"],n=this.style["symbol"+f+"Spacing"]||0,u=this.style["symbol"+f+"VSpacing"]||n,B=this.style["symbol"+f+"ArcSpacing"];null!=B&&(B*=this.getArcSize(c+this.strokewidth,
+d+this.strokewidth),n+=B,u+=B);var B=b,l=e,B=t==mxConstants.ALIGN_CENTER?B+(c-p)/2:t==mxConstants.ALIGN_RIGHT?B+(c-p-n):B+n,l=m==mxConstants.ALIGN_MIDDLE?l+(d-aa)/2:m==mxConstants.ALIGN_BOTTOM?l+(d-aa-u):l+u;a.save();t=new g;t.style=this.style;g.prototype.paintVertexShape.call(t,a,B,l,p,aa);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",G);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,e,c,d,f){f?
+(a.moveTo(0,0),a.lineTo(c/2,d/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",F);mxUtils.extend(I,mxShape);I.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.ellipse(c/4,0,c/2,d/4);a.fillAndStroke();a.begin();a.moveTo(c/2,d/4);a.lineTo(c/2,2*d/3);a.moveTo(c/2,d/3);a.lineTo(0,d/3);a.moveTo(c/2,d/3);a.lineTo(c,d/3);a.moveTo(c/2,2*d/3);a.lineTo(0,d);a.moveTo(c/2,2*d/3);a.lineTo(c,d);a.end();a.stroke()};
+mxCellRenderer.registerShape("umlActor",I);mxUtils.extend(J,mxShape);J.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};J.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(c/6,d/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",J);mxUtils.extend(t,mxEllipse);t.prototype.paintVertexShape=function(a,b,
+e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,e+d);a.lineTo(b+7*c/8,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",t);mxUtils.extend(K,mxShape);K.prototype.paintVertexShape=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(c,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(c,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(B,mxShape);B.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+
+a.height/8,a.width,7*a.height/8)};B.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,d/8,c,7*d/8);a.fillAndStroke()};B.prototype.paintForeground=function(a,b,e,c,d){a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",B);mxUtils.extend(L,mxRectangleShape);L.prototype.size=40;L.prototype.isHtmlAllowed=function(){return!1};L.prototype.getLabelBounds=
+function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};L.prototype.paintBackground=function(a,b,e,c,d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,e,c,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=L&&(g=new g,
+g.apply(this.state),a.save(),g.paintVertexShape(a,b,e,c,f),a.restore()));f<d&&(a.setDashed(!0),a.begin(),a.moveTo(b+c/2,e+f),a.lineTo(b+c/2,e+d),a.end(),a.stroke())};L.prototype.paintForeground=function(a,b,e,c,d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,e,c,Math.min(d,f))};mxCellRenderer.registerShape("umlLifeline",L);mxUtils.extend(O,mxShape);O.prototype.width=60;O.prototype.height=30;O.prototype.corner=
+10;O.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};O.prototype.paintBackground=function(a,b,e,c,d){var f=this.corner,g=Math.min(c,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),t=Math.min(d,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),m=mxUtils.getValue(this.style,
+mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);m!=mxConstants.NONE&&(a.setFillColor(m),a.rect(b,e,c,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(a,b,e,c,d),a.setGradient(this.fill,this.gradient,b,e,c,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,e);a.lineTo(b+g,e);a.lineTo(b+g,e+Math.max(0,t-1.5*f));a.lineTo(b+Math.max(0,g-f),e+t);a.lineTo(b,e+t);a.close();a.fillAndStroke();a.begin();
+a.moveTo(b+g,e);a.lineTo(b+c,e);a.lineTo(b+c,e+d);a.lineTo(b,e+d);a.lineTo(b,e+t);a.stroke()};mxCellRenderer.registerShape("umlFrame",O);mxPerimeter.LifelinePerimeter=function(a,b,e,c){c=L.prototype.size;null!=b&&(c=mxUtils.getValue(b.style,"size",c)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;e.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+c,e.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);
+mxPerimeter.OrthogonalPerimeter=function(a,b,e,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,e,c){c=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(c+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return e.x<
+a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,e.y)));e.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,e.x)),a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,e,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",z.prototype.size))*
+b.view.scale))),b.style),b,e,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,c){var d=m.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,t=a.width,p=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=p*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+
+t,g+d),new mxPoint(f+t,g+p),new mxPoint(f,g+p-d),new mxPoint(f,g)]):(d=t*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+t,g),new mxPoint(f+t-d,g+p),new mxPoint(f,g+p),new mxPoint(f+d,g)]);p=a.getCenterX();a=a.getCenterY();a=new mxPoint(p,a);c&&(e.x<f||e.x>f+t?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,e,c){var d=n.prototype.size;null!=b&&(d=
+mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,t=a.width,m=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(d=t*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+t-d,g),new mxPoint(f+t,g+m),new mxPoint(f,g+m),new mxPoint(f+d,g)]):b==mxConstants.DIRECTION_WEST?(d=t*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+t,g),new mxPoint(f+t-d,g+m),new mxPoint(f+d,g+m),new mxPoint(f,
+g)]):b==mxConstants.DIRECTION_NORTH?(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g+d),new mxPoint(f+t,g),new mxPoint(f+t,g+m),new mxPoint(f,g+m-d),new mxPoint(f,g+d)]):(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+t,g+d),new mxPoint(f+t,g+m-d),new mxPoint(f,g+m),new mxPoint(f,g)]);m=a.getCenterX();a=a.getCenterY();a=new mxPoint(m,a);c&&(e.x<f||e.x>f+t?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);
+mxPerimeter.StepPerimeter=function(a,b,e,c){var d="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=d?C.prototype.fixedSize:C.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));d&&(f*=b.view.scale);var g=a.x,t=a.y,m=a.width,p=a.height,n=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),t=[new mxPoint(g,
+t),new mxPoint(g+m-d,t),new mxPoint(g+m,a),new mxPoint(g+m-d,t+p),new mxPoint(g,t+p),new mxPoint(g+d,a),new mxPoint(g,t)]):b==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),t=[new mxPoint(g+d,t),new mxPoint(g+m,t),new mxPoint(g+m-d,a),new mxPoint(g+m,t+p),new mxPoint(g+d,t+p),new mxPoint(g,a),new mxPoint(g+d,t)]):b==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),t=[new mxPoint(g,t+d),new mxPoint(n,t),new mxPoint(g+m,t+
+d),new mxPoint(g+m,t+p),new mxPoint(n,t+p-d),new mxPoint(g,t+p),new mxPoint(g,t+d)]):(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),t=[new mxPoint(g,t),new mxPoint(n,t+d),new mxPoint(g+m,t),new mxPoint(g+m,t+p-d),new mxPoint(n,t+p),new mxPoint(g,t+p-d),new mxPoint(g,t)]);n=new mxPoint(n,a);c&&(e.x<g||e.x>g+m?n.y=e.y:n.x=e.x);return mxUtils.getPerimeterPoint(t,n,e)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,e,c){var d=
+"0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=d?A.prototype.fixedSize:A.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));var g=a.x,t=a.y,m=a.width,p=a.height,n=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),t=[new mxPoint(n,t),new mxPoint(g+m,t+d),new mxPoint(g+
+m,t+p-d),new mxPoint(n,t+p),new mxPoint(g,t+p-d),new mxPoint(g,t+d),new mxPoint(n,t)]):(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),t=[new mxPoint(g+d,t),new mxPoint(g+m-d,t),new mxPoint(g+m,a),new mxPoint(g+m-d,t+p),new mxPoint(g+d,t+p),new mxPoint(g,a),new mxPoint(g+d,t)]);n=new mxPoint(n,a);c&&(e.x<g||e.x>g+m?n.y=e.y:n.x=e.x);return mxUtils.getPerimeterPoint(t,n,e)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(H,mxShape);H.prototype.size=
+10;H.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,e);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",H);mxUtils.extend(S,mxShape);S.prototype.size=10;S.prototype.inset=2;S.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",
+this.inset))+this.strokewidth;a.translate(b,e);a.begin();a.moveTo(c/2,f+g);a.lineTo(c/2,d);a.end();a.stroke();a.begin();a.moveTo((c-f)/2-g,f/2);a.quadTo((c-f)/2-g,f+g,c/2,f+g);a.quadTo((c+f)/2+g,f+g,(c+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",S);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",
+fa);mxUtils.extend(ga,mxShape);ga.prototype.inset=2;ga.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,e);a.ellipse(0,f,c-2*f,d-2*f);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ga);mxUtils.extend(ba,mxCylinder);ba.prototype.jettyWidth=20;ba.prototype.jettyHeight=10;ba.prototype.redrawPath=
+function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,t=Math.min(b,d-b),m=Math.min(t+2*b,d-b);f?(a.moveTo(e,t),a.lineTo(g,t),a.lineTo(g,t+b),a.lineTo(e,t+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,t+b),a.lineTo(0,t+b),
+a.lineTo(0,t),a.lineTo(e,t),a.close());a.end()};mxCellRenderer.registerShape("module",ba);mxUtils.extend(Y,mxCylinder);Y.prototype.jettyWidth=32;Y.prototype.jettyHeight=12;Y.prototype.redrawPath=function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,t=.3*d-b/2,m=.7*d-b/2;f?(a.moveTo(e,t),a.lineTo(g,t),a.lineTo(g,t+b),a.lineTo(e,t+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,
+m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,t+b),a.lineTo(0,t+b),a.lineTo(0,t),a.lineTo(e,t),a.close());a.end()};mxCellRenderer.registerShape("component",Y);mxUtils.extend(X,mxRectangleShape);X.prototype.paintForeground=function(a,b,e,c,d){var f=c/2,g=d/2,t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(b+f,e),new mxPoint(b+
+c,e+g),new mxPoint(b+f,e+d),new mxPoint(b,e+g)],this.isRounded,t,!0);a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",X);mxUtils.extend(ca,mxDoubleEllipse);ca.prototype.outerStroke=!0;ca.prototype.paintVertexShape=function(a,b,e,c,d){var f=Math.min(4,Math.min(c/5,d/5));0<c&&0<d&&(a.ellipse(b+f,e+f,c-2*f,d-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,e,c,d),a.stroke())};mxCellRenderer.registerShape("endState",
+ca);mxUtils.extend(ha,ca);ha.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ha);mxUtils.extend(ea,mxArrowConnector);ea.prototype.defaultWidth=4;ea.prototype.isOpenEnded=function(){return!0};ea.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ea.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",ea);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=
+10;U.prototype.defaultArrowWidth=20;U.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};U.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};U.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",U);mxUtils.extend(da,mxActor);
+da.prototype.size=30;da.prototype.isRoundable=function(){return!0};da.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(0,b),new mxPoint(c,0),new mxPoint(c,d)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("manualInput",da);mxUtils.extend(Q,mxRectangleShape);Q.prototype.dx=20;Q.prototype.dy=20;
+Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.paintForeground=function(a,b,e,c,d){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*g,d*g));g=Math.max(f,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,
+e+f);a.lineTo(b+c,e+f);a.end();a.stroke();a.begin();a.moveTo(b+g,e);a.lineTo(b+g,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",Q);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(b,e),new mxPoint(b,d),new mxPoint(0,d)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",M);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(c,0);a.lineTo(c,d);a.end();a.moveTo(0,d/2);a.lineTo(c,d/2);a.end()};mxCellRenderer.registerShape("crossbar",la);mxUtils.extend(P,mxActor);P.prototype.dx=
+20;P.prototype.dy=20;P.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint((c+b)/2,e),new mxPoint((c+b)/2,d),new mxPoint((c-b)/
+2,d),new mxPoint((c-b)/2,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",P);mxUtils.extend(T,mxActor);T.prototype.arrowWidth=.3;T.prototype.arrowSize=.2;T.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
+mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",T);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",T.prototype.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",
+T.prototype.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(b,0),new mxPoint(b,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(b,f),new mxPoint(b,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ja);mxUtils.extend(sa,mxActor);sa.prototype.size=.1;sa.prototype.redrawPath=function(a,b,e,c,d){b=
+c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(c,0);a.quadTo(c-2*b,d/2,c,d);a.lineTo(b,d);a.quadTo(b-2*b,d/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",sa);mxUtils.extend(N,mxActor);N.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.close();a.end()};mxCellRenderer.registerShape("or",N);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);
+a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.quadTo(c/2,d/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",oa);mxUtils.extend(W,mxActor);W.prototype.size=20;W.prototype.isRoundable=function(){return!0};W.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(c/2,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.8*b),new mxPoint(c,
d),new mxPoint(0,d),new mxPoint(0,.8*b)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("loopLimit",W);mxUtils.extend(Z,mxActor);Z.prototype.size=.375;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a,b,e,c,d){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d-b),new mxPoint(c/
2,d),new mxPoint(0,d-b)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",Z);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/2,e+d);a.lineTo(b+c,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",R);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);
a.begin();a.moveTo(b,e+d/2);a.lineTo(b+c,e+d/2);a.end();a.stroke();a.begin();a.moveTo(b+c/2,e);a.lineTo(b+c/2,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ia);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*c,e+.145*d);a.lineTo(b+.855*c,e+.855*d);a.end();a.stroke();a.begin();a.moveTo(b+.855*c,e+.145*d);a.lineTo(b+.145*c,e+.855*d);a.end();a.stroke()};
@@ -2806,26 +2808,26 @@ c/2,e+d)):(a.moveTo(b,e+d/2),a.lineTo(b+c,e+d/2));a.end();a.stroke()};mxCellRend
"size",this.size))));b=(d-f)/2;e=b+f;var g=(c-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(c,b);a.lineTo(c,e);a.lineTo(f,e);a.lineTo(f,d);a.lineTo(g,d);a.lineTo(g,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("cross",ya);mxUtils.extend(ma,mxActor);ma.prototype.size=.25;ma.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(c,d/2);e=Math.min(c-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,d/2);a.lineTo(e,
0);a.lineTo(c-b,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,c-b,d);a.lineTo(e,d);a.close();a.end()};mxCellRenderer.registerShape("display",ma);mxUtils.extend(ta,mxConnector);ta.prototype.origPaintEdgeShape=ta.prototype.paintEdgeShape;ta.prototype.paintEdgeShape=function(a,b,e){for(var c=[],d=0;d<b.length;d++)c.push(mxUtils.clone(b[d]));var d=a.state.dashed,f=a.state.fixDash;ta.prototype.origPaintEdgeShape.apply(this,[a,c,e]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&
(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,f),ta.prototype.origPaintEdgeShape.apply(this,[a,b,e])))};mxCellRenderer.registerShape("filledEdge",ta);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),e=a.apply(this,arguments);"umlFrame"==b.style.shape&&e.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});
-return e}}();mxMarker.addMarker("dash",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-t/2,c.y-t/2+n/2);a.lineTo(c.x+t/2-3*n/2,c.y-3*t/2-n/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1),B=c.x+n/2,l=c.y+t/2;c.x-=n;c.y-=t;return function(){a.begin();a.moveTo(B-n/2-t/2,l-t/2+n/2);a.lineTo(B-n/2+t/2,l-t/2-n/2);a.lineTo(B+t/2-3*n/2,l-3*t/2-n/2);a.lineTo(B-t/2-3*n/2,l-3*t/2+n/2);a.close();p?a.fillAndStroke():
-a.stroke()}});mxMarker.addMarker("cross",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-t/2,c.y-t/2+n/2);a.lineTo(c.x+t/2-3*n/2,c.y-3*t/2-n/2);a.moveTo(c.x-n/2+t/2,c.y-t/2-n/2);a.lineTo(c.x-t/2-3*n/2,c.y-3*t/2+n/2);a.stroke()}});mxMarker.addMarker("circle",Ba);mxMarker.addMarker("circlePlus",function(a,b,e,c,d,f,g,u,m,p){var n=c.clone(),t=Ba.apply(this,arguments),B=d*(g+2*m),l=f*(g+2*m);return function(){t.apply(this,arguments);a.begin();a.moveTo(n.x-
-d*m,n.y-f*m);a.lineTo(n.x-2*B+d*m,n.y-2*l+f*m);a.moveTo(n.x-B-l+f*m,n.y-l+B-d*m);a.lineTo(n.x+l-B-f*m,n.y-l-B+d*m);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1),B=c.clone();c.x-=n;c.y-=t;return function(){a.begin();a.moveTo(B.x-t,B.y+n);a.quadTo(c.x-t,c.y+n,c.x,c.y);a.quadTo(c.x+t,c.y-n,B.x+t,B.y-n);a.stroke()}});mxMarker.addMarker("async",function(a,b,e,c,d,f,g,u,m,p){b=d*m*1.118;e=f*m*1.118;d*=g+m;f*=g+m;var n=c.clone();n.x-=b;n.y-=e;c.x+=
-1*-d-b;c.y+=1*-f-e;return function(){a.begin();a.moveTo(n.x,n.y);u?a.lineTo(n.x-d-f/2,n.y-f+d/2):a.lineTo(n.x+f/2-d,n.y-f-d/2);a.lineTo(n.x-d,n.y-f);a.close();p?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,e,c,d,f,g,u,m,p,n){f*=u+p;g*=u+p;var t=d.clone();return function(){b.begin();b.moveTo(t.x,t.y);m?b.lineTo(t.x-f-g/a,t.y-g+f/a):b.lineTo(t.x+g/a-f,t.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Oa=function(a,
-b,e){return Da(a,["width"],b,function(b,c,d,f,g){g=a.shape.getEdgeWidth()*a.view.scale+e;return new mxPoint(f.x+c*b/4+d*g/2,f.y+d*b/4-c*g/2)},function(b,c,d,f,g,u){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));a.style.width=Math.round(2*b)/a.view.scale-e})},Da=function(a,b,e,c,d){return V(a,b,function(b){var d=a.absolutePoints,f=d.length-1;b=a.view.translate;var g=a.view.scale,u=e?d[0]:d[f],d=e?d[1]:d[f-1],f=d.x-u.x,m=d.y-u.y,p=Math.sqrt(f*f+m*m),u=c.call(this,p,f/p,m/p,u,d);return new mxPoint(u.x/
-g-b.x,u.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,u=g.length-1;b=a.view.translate;var m=a.view.scale,p=e?g[0]:g[u],g=e?g[1]:g[u-1],u=g.x-p.x,n=g.y-p.y,t=Math.sqrt(u*u+n*n);c.x=(c.x+b.x)*m;c.y=(c.y+b.y)*m;d.call(this,t,u/t,n/t,p,g,c,f)})},za=function(a){return function(b){return[V(b,["arrowWidth","arrowSize"],function(b){var e=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",T.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",T.prototype.arrowSize)));
+return e}}();mxMarker.addMarker("dash",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-u/2,c.y-u/2+n/2);a.lineTo(c.x+u/2-3*n/2,c.y-3*u/2-n/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1),B=c.x+n/2,l=c.y+u/2;c.x-=n;c.y-=u;return function(){a.begin();a.moveTo(B-n/2-u/2,l-u/2+n/2);a.lineTo(B-n/2+u/2,l-u/2-n/2);a.lineTo(B+u/2-3*n/2,l-3*u/2-n/2);a.lineTo(B-u/2-3*n/2,l-3*u/2+n/2);a.close();p?a.fillAndStroke():
+a.stroke()}});mxMarker.addMarker("cross",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-u/2,c.y-u/2+n/2);a.lineTo(c.x+u/2-3*n/2,c.y-3*u/2-n/2);a.moveTo(c.x-n/2+u/2,c.y-u/2-n/2);a.lineTo(c.x-u/2-3*n/2,c.y-3*u/2+n/2);a.stroke()}});mxMarker.addMarker("circle",Ba);mxMarker.addMarker("circlePlus",function(a,b,e,c,d,f,g,t,m,p){var n=c.clone(),u=Ba.apply(this,arguments),B=d*(g+2*m),l=f*(g+2*m);return function(){u.apply(this,arguments);a.begin();a.moveTo(n.x-
+d*m,n.y-f*m);a.lineTo(n.x-2*B+d*m,n.y-2*l+f*m);a.moveTo(n.x-B-l+f*m,n.y-l+B-d*m);a.lineTo(n.x+l-B-f*m,n.y-l-B+d*m);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1),B=c.clone();c.x-=n;c.y-=u;return function(){a.begin();a.moveTo(B.x-u,B.y+n);a.quadTo(c.x-u,c.y+n,c.x,c.y);a.quadTo(c.x+u,c.y-n,B.x+u,B.y-n);a.stroke()}});mxMarker.addMarker("async",function(a,b,e,c,d,f,g,t,m,p){b=d*m*1.118;e=f*m*1.118;d*=g+m;f*=g+m;var n=c.clone();n.x-=b;n.y-=e;c.x+=
+1*-d-b;c.y+=1*-f-e;return function(){a.begin();a.moveTo(n.x,n.y);t?a.lineTo(n.x-d-f/2,n.y-f+d/2):a.lineTo(n.x+f/2-d,n.y-f-d/2);a.lineTo(n.x-d,n.y-f);a.close();p?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,e,c,d,f,g,t,m,p,n){f*=t+p;g*=t+p;var u=d.clone();return function(){b.begin();b.moveTo(u.x,u.y);m?b.lineTo(u.x-f-g/a,u.y-g+f/a):b.lineTo(u.x+g/a-f,u.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Oa=function(a,
+b,e){return Da(a,["width"],b,function(b,c,d,f,g){g=a.shape.getEdgeWidth()*a.view.scale+e;return new mxPoint(f.x+c*b/4+d*g/2,f.y+d*b/4-c*g/2)},function(b,c,d,f,g,t){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));a.style.width=Math.round(2*b)/a.view.scale-e})},Da=function(a,b,e,c,d){return V(a,b,function(b){var d=a.absolutePoints,f=d.length-1;b=a.view.translate;var g=a.view.scale,t=e?d[0]:d[f],d=e?d[1]:d[f-1],f=d.x-t.x,m=d.y-t.y,p=Math.sqrt(f*f+m*m),t=c.call(this,p,f/p,m/p,t,d);return new mxPoint(t.x/
+g-b.x,t.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,t=g.length-1;b=a.view.translate;var m=a.view.scale,p=e?g[0]:g[t],g=e?g[1]:g[t-1],t=g.x-p.x,n=g.y-p.y,u=Math.sqrt(t*t+n*n);c.x=(c.x+b.x)*m;c.y=(c.y+b.y)*m;d.call(this,u,t/u,n/u,p,g,c,f)})},za=function(a){return function(b){return[V(b,["arrowWidth","arrowSize"],function(b){var e=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",T.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",T.prototype.arrowSize)));
return new mxPoint(b.x+(1-c)*b.width,b.y+(1-e)*b.height/2)},function(b,e){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-e.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-e.x)/b.width))})]}},Ka=function(a,b,e){return function(c){var d=[V(c,["size"],function(e){var c=Math.max(0,Math.min(e.width,Math.min(e.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(e.x+c,e.y+c)},function(b,e){this.state.style.size=Math.round(Math.max(0,
Math.min(Math.min(b.width,e.x-b.x),Math.min(b.height,e.y-b.y)))/a)},!1)];e&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(va(c));return d}},Ea=function(a,b,e,c,d){e=null!=e?e:1;return function(f){var g=[V(f,["size"],function(b){var e=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",e?d:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,c*(e?1:b.width))),b.getCenterY())},function(a,b,c){a=null!=d&&"0"!=mxUtils.getValue(this.state.style,
"fixedSize","0")?b.x-a.x:Math.max(0,Math.min(e,(b.x-a.x)/a.width));this.state.style.size=a},!1,c)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(va(f));return g}},Ma=function(a){return function(b){var e=[V(b,["size"],function(b){var e=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+e*b.width*.75,b.y+b.height/4)},function(b,e){this.state.style.size=Math.max(0,Math.min(a,(e.x-b.x)/(.75*b.width)))},!1,!0)];mxUtils.getValue(b.style,
mxConstants.STYLE_ROUNDED,!1)&&e.push(va(b));return e}},Ca=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(va(a));return b}},va=function(a,b){return V(a,[mxConstants.STYLE_ARCSIZE],function(e){var c=null!=b?b:e.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var d=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(e.x+e.width-Math.min(e.width/2,d),e.y+c)}d=Math.max(0,
parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(e.x+e.width-Math.min(Math.max(e.width/2,e.height/2),Math.min(e.width,e.height)*d),e.y+c)},function(b,e,c){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-e.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-
-e.x+b.x)/Math.min(b.width,b.height))))})},V=function(a,b,e,c,d,f,g){var u=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);u.execute=function(a){for(var e=0;e<b.length;e++)this.copyStyle(b[e]);g&&g(a)};u.getPosition=e;u.setPosition=c;u.ignoreGrid=null!=d?d:!0;if(f){var m=u.positionChanged;u.positionChanged=function(){m.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return u},Fa={link:function(a){return[Oa(a,!0,10),Oa(a,!1,10)]},flexArrow:function(a){var b=
+e.x+b.x)/Math.min(b.width,b.height))))})},V=function(a,b,e,c,d,f,g){var t=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);t.execute=function(a){for(var e=0;e<b.length;e++)this.copyStyle(b[e]);g&&g(a)};t.getPosition=e;t.setPosition=c;t.ignoreGrid=null!=d?d:!0;if(f){var m=t.positionChanged;t.positionChanged=function(){m.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return t},Fa={link:function(a){return[Oa(a,!0,10),Oa(a,!1,10)]},flexArrow:function(a){var b=
a.view.graph.gridSize/a.view.scale,e=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(e.push(Da(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,e,c,d,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)+c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)-e*
-b/2)},function(e,c,d,f,g,u,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<
-b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),e.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,e,c,d,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)+c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)-e*b/2)},function(e,c,d,f,g,u,m){e=
-Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
+b/2)},function(e,c,d,f,g,t,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<
+b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),e.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,e,c,d,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)+c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)-e*b/2)},function(e,c,d,f,g,t,m){e=
+Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(e.push(Da(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,e,c,d,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,
-mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,u,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
+mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,t,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),e.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,e,c,d,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/
-5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,u,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
+5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,t,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return e},swimlane:function(a){var b=[];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var e=
parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(va(a,e/2))}b.push(V(a,[mxConstants.STYLE_STARTSIZE],function(b){var e=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,e))):new mxPoint(b.x+Math.max(0,Math.min(b.width,e)),b.getCenterY())},function(b,e){a.style[mxConstants.STYLE_STARTSIZE]=
1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,e.y-b.y))):Math.round(Math.max(0,Math.min(b.width,e.x-b.x)))},!1,null,function(b){if(mxEvent.isControlDown(b.getEvent())&&(b=a.view.graph,b.isTableRow(a.cell)||b.isTableCell(a.cell))){for(var e=b.getSwimlaneDirection(a.style),c=b.model.getParent(a.cell),c=b.model.getChildCells(c,!0),d=[],f=0;f<c.length;f++)c[f]!=a.cell&&b.isSwimlane(c[f])&&b.getSwimlaneDirection(b.getCurrentCellStyle(c[f]))==
@@ -2844,11 +2846,11 @@ mxUtils.getValue(this.state.style,"jettyHeight",ba.prototype.jettyHeight)));retu
b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},singleArrow:za(1),doubleArrow:za(.5),folder:function(a){return[V(a,["tabWidth","tabHeight"],function(a){var e=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",b.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",b.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",b.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(e=a.width-e);return new mxPoint(a.x+e,a.y+c)},function(a,e){var c=Math.max(0,Math.min(a.width,e.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",b.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,e.y-a.y)))},!1)]},document:function(a){return[V(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",p.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},tape:function(a){return[V(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))},!1)]},offPageConnector:function(a){return[V(a,
-["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},step:Ea(C.prototype.size,!0,null,!0,C.prototype.fixedSize),hexagon:Ea(A.prototype.size,!0,.5,!0),curlyBracket:Ea(v.prototype.size,!1),display:Ea(ma.prototype.size,!1),cube:Ka(1,c.prototype.size,!1),card:Ka(.5,e.prototype.size,!0),
-loopLimit:Ka(.5,W.prototype.size,!0),trapezoid:Ma(.5),parallelogram:Ma(1)};Graph.createHandle=V;Graph.handleFactory=Fa;var Ta=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=Ta.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);
-b=Fa[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Fa[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Fa[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ga=new mxPoint(1,0),
-Ha=new mxPoint(1,0),za=mxUtils.toRadians(-30),Ga=mxUtils.getRotatedPoint(Ga,Math.cos(za),Math.sin(za)),za=mxUtils.toRadians(-150),Ha=mxUtils.getRotatedPoint(Ha,Math.cos(za),Math.sin(za));mxEdgeStyle.IsometricConnector=function(a,b,e,c,d){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,u=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==u&&null!=b&&(u=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=e&&(g=new mxPoint(e.getCenterX(),e.getCenterY()));
-var m=Ga.x,p=Ga.y,n=Ha.x,t=Ha.y,B="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=u){a=function(a,b,e){a-=l.x;var c=b-l.y;b=(t*a-n*c)/(m*t-p*n);a=(p*a-m*c)/(p*n-m*t);B?(e&&(l=new mxPoint(l.x+m*b,l.y+p*b),d.push(l)),l=new mxPoint(l.x+n*a,l.y+t*a)):(e&&(l=new mxPoint(l.x+n*a,l.y+t*a),d.push(l)),l=new mxPoint(l.x+m*b,l.y+p*b));d.push(l)};var l=u;null==c&&(c=new mxPoint(u.x+(g.x-u.x)/2,u.y+(g.y-u.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
+["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},step:Ea(C.prototype.size,!0,null,!0,C.prototype.fixedSize),hexagon:Ea(A.prototype.size,!0,.5,!0,A.prototype.fixedSize),curlyBracket:Ea(v.prototype.size,!1),display:Ea(ma.prototype.size,!1),cube:Ka(1,c.prototype.size,!1),card:Ka(.5,
+e.prototype.size,!0),loopLimit:Ka(.5,W.prototype.size,!0),trapezoid:Ma(.5),parallelogram:Ma(1)};Graph.createHandle=V;Graph.handleFactory=Fa;var Ta=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=Ta.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&
+(b=mxConstants.SHAPE_SWIMLANE);b=Fa[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Fa[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Fa[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory=
+{};var Ga=new mxPoint(1,0),Ha=new mxPoint(1,0),za=mxUtils.toRadians(-30),Ga=mxUtils.getRotatedPoint(Ga,Math.cos(za),Math.sin(za)),za=mxUtils.toRadians(-150),Ha=mxUtils.getRotatedPoint(Ha,Math.cos(za),Math.sin(za));mxEdgeStyle.IsometricConnector=function(a,b,e,c,d){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,t=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==t&&null!=b&&(t=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=e&&(g=new mxPoint(e.getCenterX(),
+e.getCenterY()));var m=Ga.x,p=Ga.y,n=Ha.x,u=Ha.y,B="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=t){a=function(a,b,e){a-=l.x;var c=b-l.y;b=(u*a-n*c)/(m*u-p*n);a=(p*a-m*c)/(p*n-m*u);B?(e&&(l=new mxPoint(l.x+m*b,l.y+p*b),d.push(l)),l=new mxPoint(l.x+n*a,l.y+u*a)):(e&&(l=new mxPoint(l.x+n*a,l.y+u*a),d.push(l)),l=new mxPoint(l.x+m*b,l.y+p*b));d.push(l)};var l=t;null==c&&(c=new mxPoint(t.x+(g.x-t.x)/2,t.y+(g.y-t.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
mxEdgeStyle.IsometricConnector);var Ua=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var e=new mxElbowEdgeHandler(a);e.snapToTerminals=!1;return e}return Ua.apply(this,arguments)};f.prototype.constraints=[];d.prototype.getConstraints=function(a,b,e){a=[];var c=Math.tan(mxUtils.toRadians(30)),d=(.5-c)/2,c=Math.min(b,e/(.5+c));b=(b-c)/2;e=(e-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b+.5*c,e+c*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+c,e+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+c,e+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*c,e+(1-d)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e+.75*c));return a};z.prototype.getConstraints=function(a,b,e){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,
@@ -2900,8 +2902,8 @@ Actions.prototype.init=function(){function a(a){d.escape();a=d.deleteCells(d.get
"import";window.openFile=new OpenFile(mxUtils.bind(this,function(){c.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,e){try{var b=mxUtils.parseXml(a);f.graph.setSelectionCells(f.graph.importGraphModel(b.documentElement))}catch(p){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+p.message)}}));c.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+
"+S").isEnabled=k;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,296,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",function(){c.showDialog((new PageSetupDialog(c)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){c.showDialog((new PrintDialog(c)).container,
300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(d,null,10,10)});this.addAction("undo",function(){c.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){c.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{mxClipboard.copy(d)}catch(b){c.handleError(b)}},
-null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var c=0;c<b.length&&a;c++)a=a&&d.model.isEdge(b[c]);var f=d.view.translate,m=d.view.scale,n=f.x,l=f.y,f=null;if(1==b.length&&a){var t=d.getCellGeometry(b[0]);
-null!=t&&(f=t.getTerminalPoint(!0))}f=null!=f?f:d.getBoundingBoxFromGeometry(b,a);if(null!=f){var k=Math.round(d.snap(d.popupMenuHandler.triggerX/m-n)),y=Math.round(d.snap(d.popupMenuHandler.triggerY/m-l));d.cellsMoved(b,k-f.x,y-f.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&&(a=d.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shift+X");
+null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var c=0;c<b.length&&a;c++)a=a&&d.model.isEdge(b[c]);var f=d.view.translate,m=d.view.scale,n=f.x,l=f.y,f=null;if(1==b.length&&a){var u=d.getCellGeometry(b[0]);
+null!=u&&(f=u.getTerminalPoint(!0))}f=null!=f?f:d.getBoundingBoxFromGeometry(b,a);if(null!=f){var k=Math.round(d.snap(d.popupMenuHandler.triggerX/m-n)),y=Math.round(d.snap(d.popupMenuHandler.triggerY/m-l));d.cellsMoved(b,k-f.x,y-f.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&&(a=d.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shift+X");
this.addAction("pasteSize",function(a){if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=c.copiedSize){d.getModel().beginUpdate();try{var b=d.getSelectionCells();for(a=0;a<b.length;a++)if(d.getModel().isVertex(b[a])){var f=d.getCellGeometry(b[a]);null!=f&&(f=f.clone(),f.width=c.copiedSize.width,f.height=c.copiedSize.height,d.getModel().setGeometry(b[a],f))}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");
this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{d.setSelectionCells(d.duplicateCells()),d.scrollCellToVisible(d.getSelectionCell())}catch(b){c.handleError(b)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(a){d.turnShapes(d.getSelectionCells(),null!=a?mxEvent.isShiftDown(a):!1)},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",function(){d.selectVertices(null,
!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){d.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){d.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){d.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{var a=d.isCellMovable(d.getSelectionCell())?1:0;d.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -2956,8 +2958,8 @@ DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveR
DrawioFile.prototype.synchronizeFile=function(a,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,c):this.updateFile(a,c)};
DrawioFile.prototype.updateFile=function(a,c,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=k?this.mergeFile(k,a,c,d):this.reloadFile(a,c))}catch(l){null!=c&&c(l)}}),c))};
DrawioFile.prototype.mergeFile=function(a,c,f,d){var k=!0;try{this.stats.fileMerged++;var l=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),q=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=q&&0<q.length){this.shadowPages=q;this.backupPatch=this.isModified()?this.ui.diffPages(l,this.ui.pages):null;var b=[this.ui.diffPages(null!=d?d:l,this.shadowPages)];if(!this.ignorePatches(b)){var e=this.ui.patchPages(l,
-b[0]);d={};var g=this.ui.getHashValueForPages(e,d),l={},p=this.ui.getHashValueForPages(this.shadowPages,l);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",b,"checksum",p==g,g);if(null!=g&&g!=p){var m=this.compressReportData(this.getAnonymizedXmlForPages(q)),n=this.compressReportData(this.getAnonymizedXmlForPages(e)),v=this.ui.hashValue(a.getCurrentEtag()),t=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,b,"Shadow Details: "+JSON.stringify(d)+
-"\nChecksum: "+g+"\nCurrent: "+p+"\nCurrent Details: "+JSON.stringify(l)+"\nFrom: "+v+"\nTo: "+t+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(b,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(E){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+b[0]);d={};var g=this.ui.getHashValueForPages(e,d),l={},p=this.ui.getHashValueForPages(this.shadowPages,l);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",b,"checksum",p==g,g);if(null!=g&&g!=p){var m=this.compressReportData(this.getAnonymizedXmlForPages(q)),n=this.compressReportData(this.getAnonymizedXmlForPages(e)),v=this.ui.hashValue(a.getCurrentEtag()),u=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,b,"Shadow Details: "+JSON.stringify(d)+
+"\nChecksum: "+g+"\nCurrent: "+p+"\nCurrent Details: "+JSON.stringify(l)+"\nFrom: "+v+"\nTo: "+u+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(b,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(E){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
null!=f&&f(E);try{if(k)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,E);else{var x=this.getCurrentUser(),y=null!=x?x.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),y,E)}}catch(z){}}};
DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),f=c.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var k=c.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,k,!0);f.appendChild(k)}return mxUtils.getPrettyXml(f)};
DrawioFile.prototype.compressReportData=function(a,c,f){c=null!=c?c:1E4;null!=f&&null!=a&&a.length>f?a=a.substring(0,f)+"[...]":null!=a&&a.length>c&&(a=Graph.compress(a)+"\n");return a};
@@ -2976,8 +2978,8 @@ l.mathEnabled?(this.ui.editor.updateGraphComponents(),l.refresh()):(b!=l.folding
DrawioFile.prototype.save=function(a,c,f,d,k,l){try{if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(q){if(null!=f)f(q);else throw q;}};
DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,c,f){};DrawioFile.prototype.saveFile=function(a,c,f,d){};
DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.getShadowModified=function(){return this.shadowModified};DrawioFile.prototype.setShadowModified=function(a){this.shadowModified=a};DrawioFile.prototype.setModified=function(a){this.shadowModified=this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};
-DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,c,f){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,c,f){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};
-DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};
+DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,c,f){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,c,f){};DrawioFile.prototype.share=function(){this.ui.alert(mxResources.get("sharingAvailable"),null,380)};DrawioFile.prototype.getHash=function(){return""};
+DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};
DrawioFile.prototype.open=function(){this.stats.opened++;var a=this.getData();if(null!=a){var c=function(a){for(var c=0;null!=a&&c<a.length;c++){var f=a[c];null!=f.id&&0==f.id.indexOf("extFont_")&&f.parentNode.removeChild(f)}};c(document.querySelectorAll("head > style[id]"));c(document.querySelectorAll("head > link[id]"));this.ui.setFileData(a);this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)}this.installListeners();this.isSyncSupported()&&this.startSync()};
DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,c){a(null)};DrawioFile.prototype.loadDescriptor=function(a,c){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,c){this.loadDescriptor(mxUtils.bind(this,function(c){a(c)}),c)};DrawioFile.prototype.patchDescriptor=function(a,c){this.setDescriptorEtag(a,this.getDescriptorEtag(c))};
DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return Graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null};DrawioFile.prototype.getCurrentUser=function(){return null};
@@ -2990,8 +2992,9 @@ DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer
DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var a={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(a));EditorUi.debug("draft saved",this.draftId,a)}catch(c){console.error(c),this.removeDraft()}};
DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(a){}};
DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else{c=this.getErrorMessage(a);if(null==c&&null!=this.lastSaved){var f=this.ui.timeSince(new Date(this.lastSaved));
-null!=f&&(c=mxResources.get("lastSaved",[f]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+c+"</div>");c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=
-this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&(null!=this.saveDraftThread&&window.clearTimeout(this.saveDraftThread),this.saveDraftThread=window.setTimeout(mxUtils.bind(this,function(){this.saveDraft()}),0))}};
+null!=f&&(c=mxResources.get("lastSaved",[f]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlertOrange" style="cursor:pointer;overflow:hidden;">'+c+' <img src="'+Editor.saveImage+'" align="top" style="width:16px;margin-top:-2px"/></div>');c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?
+mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&(null!=this.saveDraftThread&&window.clearTimeout(this.saveDraftThread),this.saveDraftThread=window.setTimeout(mxUtils.bind(this,
+function(){this.saveDraft()}),0))}};
DrawioFile.prototype.addConflictStatus=function(a,c){this.invalidChecksum&&null==c&&(c=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":""));this.ui.spinner.stop();this.clearAutosave();var f=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=f&&0<f.length?mxEvent.addListener(f[0],"click",mxUtils.bind(this,function(c){"IMG"!=mxEvent.getSource(c).nodeName&&
a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')};
DrawioFile.prototype.showRefreshDialog=function(a,c,f){null==f&&(f=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,c)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,c)}),f),this.ui.showError(mxResources.get("error")+" ("+f+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,
@@ -3007,7 +3010,7 @@ DrawioFile.prototype.handleConflictError=function(a,c){var f=mxUtils.bind(this,f
this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,f,d,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(f,d,k):this.invalidChecksum?this.showRefreshDialog(f,d,this.getErrorMessage(a)):c?this.showConflictDialog(k,l):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));
this.synchronizeFile(f,d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){var c=null!=a?null!=a.error?a.error.message:a.message:null;null==c&&null!=a&&a.code==App.ERROR_TIMEOUT&&(c=mxResources.get("timeout"));return c};DrawioFile.prototype.isOverdue=function(){return null!=this.ageStart&&Date.now()-this.ageStart.getTime()>=this.ui.warnInterval};
DrawioFile.prototype.fileChanged=function(){this.lastChanged=new Date;this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){this.ui.stopSanityCheck();null==this.autosaveThread?(this.handleFileSuccess(!0),this.ageStart=null):this.isModified()&&(this.ui.scheduleSanityCheck(),this.ageStart=
-this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a,c){var f=Editor.guid(32);null!=this.sync?this.sync.createToken(f,mxUtils.bind(this,function(c){a(f,c)}),c):a(f)};
+this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a){var c=Editor.guid(32);null!=this.sync?this.sync.createToken(c,mxUtils.bind(this,function(f){a(c,f)}),mxUtils.bind(this,function(){a(c)})):a(c)};
DrawioFile.prototype.fileSaved=function(a,c,f,d,k){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=f&&f()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,f,d,k)}catch(b){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(b);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,b);else{var l=
this.getCurrentUser(),q=null!=l?l.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),q,b)}}catch(e){}}};
DrawioFile.prototype.autosave=function(a,c,f,d){null==this.lastAutosave&&(this.lastAutosave=Date.now());a=Date.now()-this.lastAutosave<c?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();null!=f&&f(a)}),mxUtils.bind(this,
@@ -3024,7 +3027,8 @@ this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,l?"image/png":"text/xml",l
this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){b(a)}),d,this.ui.getCurrentFile()!=this?c:null,k.scale,k.border)):b(c)};LocalFile.prototype.rename=function(a,c,f){this.title=a;this.descriptorChanged();null!=c&&c()};LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio"},{description:"diagramPngDesc",extension:"png"},{description:"diagramSvgDesc",extension:"svg"},{description:"diagramHtmlDesc",extension:"html"},{description:"diagramXmlDesc",extension:"xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",
extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",
fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},graph:{background:"#DAD2D8",gridColor:"#ABA4A9"}},{commonStyle:{fontColor:"#FEFAE0",strokeColor:"#DDA15E",fillColor:"#BC6C25"},graph:{background:"#283618",
-gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}}];Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
+gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}}];Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkgMTJ2N0g1di03SDN2N2MwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0yem0tNiAuNjdsMi41OS0yLjU4TDE3IDExLjVsLTUgNS01LTUgMS40MS0xLjQxTDExIDEyLjY3VjNoMnoiLz48L3N2Zz4=";
+Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=":
IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDAAMAPUxAEVriVp7lmCAmmGBm2OCnGmHn3OPpneSqYKbr4OcsIScsI2kto6kt46lt5KnuZmtvpquvpuvv56ywaCzwqK1xKu7yay9yq+/zLHAzbfF0bjG0bzJ1LzK1MDN18jT28nT3M3X3tHa4dTc49Xd5Njf5dng5t3k6d/l6uDm6uru8e7x8/Dz9fT29/b4+Pj5+fj5+vr6+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkKADEAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAADAAMAAAGR8CYcEgsOgYAIax4CCQuQldrCBEsiK8VS2hoFGOrlJDA+cZQwkLnqyoJFZKviSS0ICrE0ec0jDAwIiUeGyBFGhMPFBkhZo1BACH5BAkKAC4ALAAAAAAMAAwAhVB0kFR3k1V4k2CAmmWEnW6Lo3KOpXeSqH2XrIOcsISdsImhtIqhtJCmuJGnuZuwv52wwJ+ywZ+ywqm6yLHBzbLCzrXEz7fF0LnH0rrI0r7L1b/M1sXR2cfT28rV3czW3s/Z4Nfe5Nvi6ODm6uLn6+Ln7OLo7OXq7efs7+zw8u/y9PDy9PX3+Pr7+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZDQJdwSCxGDAIAoVFkFBwYSyIwGE4OkCJxIdG6WkJEx8sSKj7elfBB0a5SQg1EQ0SVVMPKhDM6iUIkRR4ZFxsgJl6JQQAh+QQJCgAxACwAAAAADAAMAIVGa4lcfZdjgpxkg51nhp5ui6N3kqh5lKqFnbGHn7KIoLOQp7iRp7mSqLmTqbqarr6br7+fssGitcOitcSuvsuuv8uwwMyzw861xNC5x9K6x9K/zNbDztjE0NnG0drJ1NzQ2eDS2+LT2+LV3ePZ4Oba4ebb4ufc4+jm6+7t8PLt8PPt8fPx8/Xx9PX09vf19/j3+Pn///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CYcEgsUhQFggFSjCQmnE1jcBhqGBXiIuAQSi7FGEIgfIzCFoCXFCZiPO0hKBMiwl7ET6eUYqlWLkUnISImKC1xbUEAIfkECQoAMgAsAAAAAAwADACFTnKPT3KPVHaTYoKcb4yjcY6leZSpf5mtgZuvh5+yiqG0i6K1jqW3kae5nrHBnrLBn7LCoLPCobTDqbrIqrvIs8LOtMPPtcPPtcTPuMbRucfSvcrUvsvVwMzWxdHaydTcytXdzNbezdff0drh2ODl2+Ln3eTp4Obq4ujs5Ont5uvu6O3w6u7w6u7x7/L09vj5+vr7+vv7////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkdAmXBILHIcicOCUqxELKKPxKAYgiYd4oMAEWo8RVmjIMScwhmBcJMKXwLCECmMGAhPI1QRwBiaSixCMDFhLSorLi8wYYxCQQAh+QQJCgAxACwAAAAADAAMAIVZepVggJphgZtnhp5vjKN2kah3kqmBmq+KobSLorWNpLaRp7mWq7ybr7+gs8KitcSktsWnuManucexwM2ywc63xtG6yNO9ytS+ytW/zNbDz9jH0tvL1d3N197S2+LU3OPU3ePV3eTX3+Xa4efb4ufd5Onl6u7r7vHs7/Lt8PLw8/Xy9Pby9fb09ff2+Pn3+Pn6+vr///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSMCYcEgseiwSR+RS7GA4JFGF8RiWNiEiJTERgkjFGAQh/KTCGoJwpApnBkITKrwoCFWnFlEhaAxXLC9CBwAGRS4wQgELYY1CQQAh+QQJCgAzACwAAAAADAAMAIVMcI5SdZFhgZtti6JwjaR4k6mAma6Cm6+KobSLorWLo7WNo7aPpredsMCescGitMOitcSmuMaqu8ixwc2zws63xdC4xtG5x9K9ytXAzdfCztjF0NnF0drK1d3M1t7P2N/P2eDT2+LX3+Xe5Onh5+vi5+vj6Ozk6e3n7O/o7O/q7vHs7/Lt8PPu8fPx8/X3+Pn6+vv7+/v8/Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRcCZcEgsmkIbTOZTLIlGqZNnchm2SCgiJ6IRqljFmQUiXIVnoITQde4chC9Y+LEQxmTFRkFSNFAqDAMIRQoCAAEEDmeLQQAh+QQJCgAwACwAAAAADAAMAIVXeZRefplff5lhgZtph59yjqV2kaeAmq6FnbGFnrGLorWNpLaQp7mRqLmYrb2essGgs8Klt8apusitvcquv8u2xNC7yNO8ydS8ytTAzdfBzdfM1t7N197Q2eDU3OPX3+XZ4ObZ4ebc4+jf5erg5erg5uvp7fDu8fPv8vTz9fb09vf19/j3+Pn4+fn5+vr6+/v///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRUCYcEgspkwjEKhUVJ1QsBNp0xm2VixiSOMRvlxFGAcTJook5eEHIhQcwpWIkAFQECkNy9AQWFwyEAkPRQ4FAwQIE2llQQAh+QQJCgAvACwAAAAADAAMAIVNcY5SdZFigptph6BvjKN0kKd8lquAmq+EnbGGn7KHn7ONpLaOpbearr+csMCdscCescGhtMOnuMauvsuzws60w862xdC9ytW/y9a/zNbCztjG0drH0tvK1N3M1t7N19/U3ePb4uff5urj6Ozk6e3l6u7m6u7o7PDq7vDt8PPv8vTw8vTw8/X19vf6+vv///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CXcEgsvlytVUplJLJIpSEDUESFTELBwSgCCQEV42kjDFiMo4uQsDB2MkLHoEHUTD7DRAHC8VAiZ0QSCgYIDxhNiUEAOw==":
IMAGE_PATH+"/spin.gif";Editor.globeImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiIvPjwvc3ZnPg==";
@@ -3057,8 +3061,8 @@ isVisible:function(a,b){return 1==a.vertices.length&&0==a.edges.length}},{name:"
e.isVertex(e.getParent(a.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(a,b){var e=0<a.vertices.length?b.editorUi.editor.graph.getCellGeometry(a.vertices[0]):null;return null!=e&&!e.relative}},
{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",
defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(a,b){var e=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null);return b.editorUi.editor.graph.isSwimlane(a.vertices[0])||null==e||e==mxConstants.NONE}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,b){return 0<a.vertices.length&&b.editorUi.editor.graph.isContainer(a.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n';
-Editor.createRoughCanvas=function(a){var b=rough.canvas({getContext:function(){return a}});b.draw=function(b){var e=b.sets||[];b=b.options||this.getDefaultOptions();for(var c=0;c<e.length;c++){var d=e[c];switch(d.type){case "path":null!=b.stroke&&this._drawToContext(a,d,b);break;case "fillPath":this._drawToContext(a,d,b);break;case "fillSketch":this.fillSketch(a,d,b)}}};b.fillSketch=function(b,e,c){var d=a.state.strokeColor,f=a.state.strokeWidth,g=a.state.strokeAlpha,u=a.state.dashed,m=c.fillWeight;
-0>m&&(m=c.strokeWidth/2);a.setStrokeAlpha(a.state.fillAlpha);a.setStrokeColor(c.fill||"");a.setStrokeWidth(m);a.setDashed(!1);this._drawToContext(b,e,c);a.setDashed(u);a.setStrokeWidth(f);a.setStrokeColor(d);a.setStrokeAlpha(g)};b._drawToContext=function(a,b,e){a.begin();for(var c=0;c<b.ops.length;c++){var d=b.ops[c],f=d.data;switch(d.op){case "move":a.moveTo(f[0],f[1]);break;case "bcurveTo":a.curveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case "lineTo":a.lineTo(f[0],f[1])}}a.end();"fillPath"===b.type&&
+Editor.createRoughCanvas=function(a){var b=rough.canvas({getContext:function(){return a}});b.draw=function(b){var e=b.sets||[];b=b.options||this.getDefaultOptions();for(var c=0;c<e.length;c++){var d=e[c];switch(d.type){case "path":null!=b.stroke&&this._drawToContext(a,d,b);break;case "fillPath":this._drawToContext(a,d,b);break;case "fillSketch":this.fillSketch(a,d,b)}}};b.fillSketch=function(b,e,c){var d=a.state.strokeColor,f=a.state.strokeWidth,g=a.state.strokeAlpha,t=a.state.dashed,m=c.fillWeight;
+0>m&&(m=c.strokeWidth/2);a.setStrokeAlpha(a.state.fillAlpha);a.setStrokeColor(c.fill||"");a.setStrokeWidth(m);a.setDashed(!1);this._drawToContext(b,e,c);a.setDashed(t);a.setStrokeWidth(f);a.setStrokeColor(d);a.setStrokeAlpha(g)};b._drawToContext=function(a,b,e){a.begin();for(var c=0;c<b.ops.length;c++){var d=b.ops[c],f=d.data;switch(d.op){case "move":a.moveTo(f[0],f[1]);break;case "bcurveTo":a.curveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case "lineTo":a.lineTo(f[0],f[1])}}a.end();"fillPath"===b.type&&
e.filled?a.fill():a.stroke()};return b};(function(){function a(b,e,c){this.canvas=b;this.rc=e;this.shape=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,a.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,a.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,a.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,a.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,a.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,a.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,a.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,a.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
a.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,a.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,a.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,a.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,a.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,a.prototype.fillAndStroke);
@@ -3068,7 +3072,7 @@ d=null;(e.filled=b)?(e.fill="none"===this.canvas.state.fillColor?"":this.canvas.
f);f=mxUtils.getValue(this.shape.style,"fillWeight",-1);e.fillWeight="auto"==f?-1:f;f=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==f&&(f=null!=this.shape.state?this.shape.state.view.graph.defaultPageBackgroundColor:"#ffffff",f=null!=e.fill&&(null!=d||null!=f&&e.fill.toLowerCase()==f.toLowerCase())?"solid":c.fillStyle);e.fillStyle=f;return e};a.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};a.prototype.end=function(){this.passThrough&&
this.originalEnd.apply(this.canvas,arguments)};a.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var a=2;a<arguments.length;a+=2)this.lastX=arguments[a-1],this.lastY=arguments[a],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};a.prototype.lineTo=function(a,b){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,a,b),this.lastX=a,this.lastY=b)};a.prototype.moveTo=
function(a,b){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,a,b),this.lastX=a,this.lastY=b,this.firstX=a,this.firstY=b)};a.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};a.prototype.quadTo=function(a,b,e,c){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,a,b,e,c),this.lastX=e,this.lastY=c)};a.prototype.curveTo=function(a,b,e,c,d,f){this.passThrough?
-this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,a,b,e,c,d,f),this.lastX=d,this.lastY=f)};a.prototype.arcTo=function(a,b,e,c,d,f,g){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,a,b,e,c,d,f,g);if(null!=m)for(var u=0;u<m.length;u+=6)this.curveTo(m[u],m[u+1],m[u+2],m[u+3],m[u+4],m[u+5]);this.lastX=f;this.lastY=g}};a.prototype.rect=function(a,b,e,c){this.passThrough?this.originalRect.apply(this.canvas,
+this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,a,b,e,c,d,f),this.lastX=d,this.lastY=f)};a.prototype.arcTo=function(a,b,e,c,d,f,g){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,a,b,e,c,d,f,g);if(null!=m)for(var t=0;t<m.length;t+=6)this.curveTo(m[t],m[t+1],m[t+2],m[t+3],m[t+4],m[t+5]);this.lastX=f;this.lastY=g}};a.prototype.rect=function(a,b,e,c){this.passThrough?this.originalRect.apply(this.canvas,
arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(a,b,e,c,this.getStyle(!0,!0)))};a.prototype.ellipse=function(a,b,e,c){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(a+e/2,b+c/2,e,c,this.getStyle(!0,!0)))};a.prototype.roundrect=function(a,b,e,c,d,f){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(a+d,b),this.lineTo(a+e-d,b),this.quadTo(a+e,b,a+e,b+f),this.lineTo(a+
e,b+c-f),this.quadTo(a+e,b+c,a+e-d,b+c),this.lineTo(a+d,b+c),this.quadTo(a,b+c,a,b+c-f),this.lineTo(a,b+f),this.quadTo(a,b,a+d,b))};a.prototype.drawPath=function(a){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),a)}catch(H){}this.passThrough=!1}else if(null!=this.nextShape){for(var b in a)this.nextShape.options[b]=a[b];null==a.stroke&&delete this.nextShape.options.stroke;a.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);
this.passThrough=!1}};a.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};a.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};a.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};a.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;
@@ -3079,7 +3083,7 @@ c||(b.save(),c=this.fill,d=this.stroke,this.stroke=this.fill=null,b.handJiggle.p
a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),d=[];if(null!=c&&0<c.length)for(var f=0;f<c.length;f++)if("mxgraph"==c[f].getAttribute("class")){d.push(c[f]);break}0<d.length&&(c=d[0].getAttribute("data-mxgraph"),null!=c?(d=JSON.parse(c),null!=d&&null!=d.xml&&(a=mxUtils.parseXml(d.xml),a=a.documentElement)):(d=d[0].getElementsByTagName("div"),0<d.length&&(c=mxUtils.getTextContent(d[0]),c=Graph.decompress(c,null,e),0<c.length&&(a=mxUtils.parseXml(c),a=a.documentElement))))}if(null!=
a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(d=null,"diagram"==a.nodeName?d=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&(d=c[Math.max(0,Math.min(c.length-1,urlParams.page||0))])),null!=
d&&(a=Editor.parseDiagramNode(d,e)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName||(a=null);return a};Editor.parseDiagramNode=function(a,b){var e=mxUtils.trim(mxUtils.getTextContent(a)),c=null;0<e.length?(e=Graph.decompress(e,null,b),null!=e&&0<e.length&&(c=mxUtils.parseXml(e).documentElement)):(e=mxUtils.getChildNodes(a),0<e.length&&(c=mxUtils.createXmlDocument(),c.appendChild(c.importNode(e[0],!0)),c=c.documentElement));return c};Editor.getDiagramNodeXml=function(a){var b=mxUtils.getTextContent(a),
-e=null;0<b.length?e=Graph.decompress(b):null!=a.firstChild&&(e=mxUtils.getXml(a.firstChild));return e};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a,!0);for(var b=null,e="",c=0,d=0,f=[],g=null;d<a.length;){var m=a.charCodeAt(d),d=d+1;10!=m&&(e+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(c)?c++:c=0;if(19==c){var u=a.indexOf("%3C%2Fmxfile%3E)",d)+15,d=d-9;if(u>d){b=a.substring(d,u);break}}10==m&&("endobj"==
+e=null;0<b.length?e=Graph.decompress(b):null!=a.firstChild&&(e=mxUtils.getXml(a.firstChild));return e};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a,!0);for(var b=null,e="",c=0,d=0,f=[],g=null;d<a.length;){var m=a.charCodeAt(d),d=d+1;10!=m&&(e+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(c)?c++:c=0;if(19==c){var t=a.indexOf("%3C%2Fmxfile%3E)",d)+15,d=d-9;if(t>d){b=a.substring(d,t);break}}10==m&&("endobj"==
e?g=null:"obj"==e.substring(e.length-3,e.length)||"xref"==e||"trailer"==e?(g=[],f[e.split(" ")[0]]=g):null!=g&&g.push(e),e="")}null==b&&(b=Editor.extractGraphModelFromXref(f));null!=b&&(b=decodeURIComponent(b.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return b};Editor.extractGraphModelFromXref=function(a){var b=a.trailer,e=null;null!=b&&(b=/.* \/Info (\d+) (\d+) R/g.exec(b.join("\n")),null!=b&&0<b.length&&(b=a[b[1]],null!=b&&(b=/.* \/Subject (\d+) (\d+) R/g.exec(b.join("\n")),null!=b&&0<b.length&&
(a=a[b[1]],null!=a&&(a=a.join("\n"),e=a.substring(1,a.length-1))))));return e};Editor.extractGraphModelFromPng=function(a){var b=null;try{var e=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,e,d){a=c.substring(a+8,a+8+d);"zTXt"==e?(d=a.indexOf(String.fromCharCode(0)),"mxGraphModel"==a.substring(0,d)&&(a=pako.inflateRaw(a.substring(d+2),{to:"string"}).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==e&&
(a=a.split(String.fromCharCode(0)),1<a.length&&("mxGraphModel"==a[0]||"mxfile"==a[0])&&(b=a[1]));if(null!=b||"IDAT"==e)return!0}))}catch(O){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.extractParserError=function(a,b){var e=null,c=null!=a?a.getElementsByTagName("parsererror"):null;null!=c&&0<c.length&&(e=b||mxResources.get("invalidChars"),c=c[0].getElementsByTagName("div"),0<c.length&&(e=mxUtils.getTextContent(c[0])));
@@ -3118,11 +3122,11 @@ else if("eot"==m||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";els
function(a){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(b){this.resolvedFontCss=b;a()})):a()};Editor.prototype.embedExtFonts=function(a){var b=this.graph.extFonts;if(null!=b&&0<b.length){var e="",c=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var d=mxUtils.bind(this,function(){0==c&&this.embedCssFonts(e,a)}),f=0;f<b.length;f++)mxUtils.bind(this,function(a,b){0==b.indexOf(Editor.GOOGLE_FONTS)?null==this.cachedGoogleFonts[b]?
(c++,this.loadUrl(b,mxUtils.bind(this,function(a){this.cachedGoogleFonts[b]=a;e+=a;c--;d()}),mxUtils.bind(this,function(a){c--;e+="@import url("+b+");";d()}))):e+=this.cachedGoogleFonts[b]:e+='@font-face {font-family: "'+a+'";src: url("'+b+'");}'})(b[f].name,b[f].url);d()}else a()};Editor.prototype.addMathCss=function(a){a=a.getElementsByTagName("defs");if(null!=a&&0<a.length)for(var b=document.getElementsByTagName("style"),e=0;e<b.length;e++)0<mxUtils.getTextContent(b[e]).indexOf("MathJax")&&a[0].appendChild(b[e].cloneNode(!0))};
Editor.prototype.addFontCss=function(a,b){b=null!=b?b:this.absoluteCssFonts(this.fontCss);if(null!=b){var e=a.getElementsByTagName("defs"),c=a.ownerDocument;0==e.length?(e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"defs"):c.createElement("defs"),null!=a.firstChild?a.insertBefore(e,a.firstChild):a.appendChild(e)):e=e[0];c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,b);e.appendChild(c)}};
-Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,b,e,c,d,f,g,m,n,p,t,l,k,x,v,y){try{f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:this.graph;k=null!=k?k:0;var u=n?null:l.background;u==mxConstants.NONE&&(u=null);null==u&&(u=c);null==u&&0==n&&(u=y?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(l.getSvg(null,null,null,x,null,g,null,null,null,p,null,y),mxUtils.bind(this,function(e){try{var c=
-new Image;c.onload=mxUtils.bind(this,function(){try{var g=function(){mxClient.IS_SF?window.setTimeout(function(){x.drawImage(c,k/m,k/m);a(n)},0):(x.drawImage(c,k/m,k/m),a(n))},n=document.createElement("canvas"),p=parseInt(e.getAttribute("width")),t=parseInt(e.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=f?Math.min(1,Math.min(3*b/(4*t),b/p)):b/p);p=Math.ceil(m*p)+2*k;t=Math.ceil(m*t)+2*k;n.setAttribute("width",p);n.setAttribute("height",t);var x=n.getContext("2d");null!=u&&(x.beginPath(),x.rect(0,
-0,p,t),x.fillStyle=u,x.fill());x.scale(m,m);if(v){var y=l.view,B=y.scale;y.scale=1;var A=btoa(unescape(encodeURIComponent(y.createSvgGrid(y.gridColor))));y.scale=B;var A="data:image/svg+xml;base64,"+A,q=l.gridSize*y.gridSteps*m,z=l.getGraphBounds(),K=y.translate.x*B,E=y.translate.y*B,C=K+(z.x-K)/B,H=E+(z.y-E)/B,D=new Image;D.onload=function(){try{for(var a=-Math.round(q-mxUtils.mod((K-C)*m,q)),b=-Math.round(q-mxUtils.mod((E-H)*m,q));a<p;a+=q)for(var e=b;e<t;e+=q)x.drawImage(D,a/m,e/m);g()}catch(ma){null!=
+Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,b,e,c,d,f,g,m,n,p,u,l,k,v,x,y){try{f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:this.graph;k=null!=k?k:0;var t=n?null:l.background;t==mxConstants.NONE&&(t=null);null==t&&(t=c);null==t&&0==n&&(t=y?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(l.getSvg(null,null,null,v,null,g,null,null,null,p,null,y),mxUtils.bind(this,function(e){try{var c=
+new Image;c.onload=mxUtils.bind(this,function(){try{var g=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(c,k/m,k/m);a(n)},0):(v.drawImage(c,k/m,k/m),a(n))},n=document.createElement("canvas"),p=parseInt(e.getAttribute("width")),u=parseInt(e.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=f?Math.min(1,Math.min(3*b/(4*u),b/p)):b/p);p=Math.ceil(m*p)+2*k;u=Math.ceil(m*u)+2*k;n.setAttribute("width",p);n.setAttribute("height",u);var v=n.getContext("2d");null!=t&&(v.beginPath(),v.rect(0,
+0,p,u),v.fillStyle=t,v.fill());v.scale(m,m);if(x){var y=l.view,B=y.scale;y.scale=1;var A=btoa(unescape(encodeURIComponent(y.createSvgGrid(y.gridColor))));y.scale=B;var A="data:image/svg+xml;base64,"+A,q=l.gridSize*y.gridSteps*m,z=l.getGraphBounds(),K=y.translate.x*B,E=y.translate.y*B,C=K+(z.x-K)/B,H=E+(z.y-E)/B,D=new Image;D.onload=function(){try{for(var a=-Math.round(q-mxUtils.mod((K-C)*m,q)),b=-Math.round(q-mxUtils.mod((E-H)*m,q));a<p;a+=q)for(var e=b;e<u;e+=q)v.drawImage(D,a/m,e/m);g()}catch(ma){null!=
d&&d(ma)}};D.onerror=function(a){null!=d&&d(a)};D.src=A}else g()}catch(pa){null!=d&&d(pa)}});c.onerror=function(a){null!=d&&d(a)};p&&this.graph.addSvgShadow(e);this.graph.mathEnabled&&this.addMathCss(e);var g=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(e,this.resolvedFontCss),c.src=Editor.createSvgDataUri(mxUtils.getXml(e))}catch(P){null!=d&&d(P)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.addFontCss(e,a),this.loadFonts(g)}catch(T){null!=
-d&&d(T)}}))}catch(P){null!=d&&d(P)}}),e,t)}catch(Q){null!=d&&d(Q)}};Editor.crcTable=[];for(var k=0;256>k;k++)for(var l=k,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[k]=l;Editor.updateCRC=function(a,b,e,c){for(var d=0;d<c;d++)a=Editor.crcTable[(a^b.charCodeAt(e+d))&255]^a>>>8;return a};Editor.crc32=function(a){for(var b=-1,e=0;e<a.length;e++)b=b>>>8^Editor.crcTable[(b^a.charCodeAt(e))&255];return(b^-1)>>>0};Editor.writeGraphModelToPng=function(a,b,e,c,d){function f(a,b){var e=n;n+=
+d&&d(T)}}))}catch(P){null!=d&&d(P)}}),e,u)}catch(Q){null!=d&&d(Q)}};Editor.crcTable=[];for(var k=0;256>k;k++)for(var l=k,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[k]=l;Editor.updateCRC=function(a,b,e,c){for(var d=0;d<c;d++)a=Editor.crcTable[(a^b.charCodeAt(e+d))&255]^a>>>8;return a};Editor.crc32=function(a){for(var b=-1,e=0;e<a.length;e++)b=b>>>8^Editor.crcTable[(b^a.charCodeAt(e))&255];return(b^-1)>>>0};Editor.writeGraphModelToPng=function(a,b,e,c,d){function f(a,b){var e=n;n+=
b;return a.substring(e,n)}function g(a){a=f(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function m(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(f(a,4),"IHDR"!=f(a,4))null!=d&&d();else{f(a,17);d=a.substring(0,n);do{var p=g(a);if("IDAT"==f(a,4)){d=a.substring(0,
n-8);"pHYs"==b&&"dpi"==e?(e=Math.round(c/.0254),e=m(e)+m(e)+String.fromCharCode(1)):e=e+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+c;c=4294967295;c=Editor.updateCRC(c,b,0,4);c=Editor.updateCRC(c,e,0,e.length);d+=m(e.length)+b+e+m(c^4294967295);d+=a.substring(n-8,a.length);break}d+=a.substring(n-8,n-4+p);f(a,p);f(a,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";
var b=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,e){b.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var e=null;null!=a.editor.graph.getModel().getParent(b)?e=b.getId():null!=a.currentPage&&
@@ -3155,34 +3159,34 @@ stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8
gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,e){if(null!=b){var c=function(a){if(null!=a)if(e)for(var c=
0;c<a.length;c++)b[a[c].name]=a[c];else for(var d in b){for(var f=!1,c=0;c<a.length;c++)if(a[c].name==d&&a[c].type==b[d].type){f=!0;break}f||delete b[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties=d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),
c(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{c(JSON.parse(a))}catch(H){}}};var v=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));v.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},e=a.vertices,c=a.edges,d=0;d<e.length;d++)this.findCommonProperties(e[d],b,0==d);for(d=0;d<c.length;d++)this.findCommonProperties(c[d],
-b,0==e.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var t=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");
-b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return t.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=
-function(a,b,e){function c(a,b,e,c){u.getModel().beginUpdate();try{var d=[],f=[];if(null!=e.index){for(var g=[],m=e.parentRow.nextSibling;m&&m.getAttribute("data-pName")==a;)g.push(m.getAttribute("data-pValue")),m=m.nextSibling;e.index<g.length?null!=c?g.splice(c,1):g[e.index]=b:g.push(b);null!=e.size&&g.length>e.size&&(g=g.slice(0,e.size));b=g.join(",");null!=e.countProperty&&(u.setCellStyles(e.countProperty,g.length,u.getSelectionCells()),d.push(e.countProperty),f.push(g.length))}u.setCellStyles(a,
-b,u.getSelectionCells());d.push(a);f.push(b);if(null!=e.dependentProps)for(a=0;a<e.dependentProps.length;a++){var n=e.dependentPropsDefVal[a],p=e.dependentPropsVals[a];if(p.length>b)p=p.slice(0,b);else for(var l=p.length;l<b;l++)p.push(n);p=p.join(",");u.setCellStyles(e.dependentProps[a],p,u.getSelectionCells());d.push(e.dependentProps[a]);f.push(p)}if("function"==typeof e.onChange)e.onChange(u,b);t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",f,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}
-function d(b,e,c){var d=mxUtils.getOffset(a,!0),f=mxUtils.getOffset(b,!0);e.style.position="absolute";e.style.left=f.x-d.x+"px";e.style.top=f.y-d.y+"px";e.style.width=b.offsetWidth+"px";e.style.height=b.offsetHeight-(c?4:0)+"px";e.style.zIndex=5}function f(a,b,e){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,
-function(f){this.editorUi.pickColor(b,function(b){d.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;c(a,b,e)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function g(a,b,e,d,f,g,m){null!=b&&(b=b.split(","),l.push({name:a,values:b,type:e,defVal:d,countProperty:f,parentRow:g,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(t,function(b){for(var n=g,t=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==
-a)n=n.nextSibling,t++;else break;var u={type:e,parentRow:g,index:t,isDeletable:!0,defVal:d,countProperty:f},t=p(a,"",u,0==t%2,m);c(a,d,u);n.parentNode.insertBefore(t,n.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(a,b,e,c,d,f,g){if(0<d){var m=Array(d);b=null!=b?b.split(","):[];for(var n=0;n<d;n++)m[n]=null!=b[n]?b[n]:null!=c?c:"";l.push({name:a,values:m,type:e,defVal:c,parentRow:f,flipBkg:g,size:d})}return document.createElement("div")}
-function n(a,b,e){var d=document.createElement("input");d.type="checkbox";d.checked="1"==b;mxEvent.addListener(d,"change",function(){c(a,d.checked?"1":"0",e)});return d}function p(b,e,p,u,l){var k=p.dispName,x=p.type,v=document.createElement("tr");v.className="gePropRow"+(l?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";v.setAttribute("data-pName",b);v.setAttribute("data-pValue",e);u=!1;null!=p.index&&(v.setAttribute("data-index",p.index),k=(null!=k?k:"")+"["+p.index+"]",u=!0);var y=document.createElement("td");
-y.className="gePropRowCell";y.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));u&&(y.style.textAlign="right");v.appendChild(y);y=document.createElement("td");y.className="gePropRowCell";if("color"==x)y.appendChild(f(b,e,p));else if("bool"==x||"boolean"==x)y.appendChild(n(b,e,p));else if("enum"==x){var B=p.enumList;for(l=0;l<B.length;l++)if(k=B[l],k.val==e){y.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(y,"click",mxUtils.bind(t,function(){var f=
-document.createElement("select");d(y,f);for(var g=0;g<B.length;g++){var m=B[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(m.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(m.dispName,null,m.dispName));f.appendChild(n)}f.value=e;a.appendChild(f);mxEvent.addListener(f,"change",function(){var a=mxUtils.htmlEntities(f.value);c(b,a,p)});f.focus();mxEvent.addListener(f,"blur",function(){a.removeChild(f)})}))}else"dynamicArr"==x?y.appendChild(g(b,e,p.subType,p.subDefVal,p.countProperty,
-v,l)):"staticArr"==x?y.appendChild(m(b,e,p.subType,p.subDefVal,p.size,v,l)):(y.innerHTML=e,mxEvent.addListener(y,"click",mxUtils.bind(t,function(){function f(){var a=g.value,a=0==a.length&&"string"!=x?0:a;p.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");c(b,a,p)}var g=document.createElement("input");d(y,g,!0);g.value=e;g.className=
-"gePropEditor";"int"!=x&&"float"!=x||p.allowAuto||(g.type="number",g.step="int"==x?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&f()});g.focus();mxEvent.addListener(g,"blur",function(){f()})})));p.isDeletable&&(l=mxUtils.button("-",mxUtils.bind(t,function(a){c(b,"",p,p.index);mxEvent.consume(a)})),l.style.height="16px",l.style.width="25px",l.style["float"]="right",l.className="geColorBtn",
-y.appendChild(l));v.appendChild(y);return v}var t=this,u=this.editorUi.editor.graph,l=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.className="geProperties";k.style.whiteSpace="nowrap";k.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var v=document.createElement("th");v.className="gePropHeaderCell";var y=document.createElement("img");y.src=Sidebar.prototype.expandedImage;v.appendChild(y);mxUtils.write(v,mxResources.get("property"));
-x.style.cursor="pointer";var B=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),e;if(t.editorUi.propertiesCollapsed){y.src=Sidebar.prototype.collapsedImage;e="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var d=a.childNodes[c],f=d.nodeName.toUpperCase();"INPUT"!=f&&"SELECT"!=f||a.removeChild(d)}catch(qa){}}else y.src=Sidebar.prototype.expandedImage,e="";for(c=0;c<b.length;c++)b[c].style.display=e};mxEvent.addListener(x,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;
-B()});x.appendChild(v);v=document.createElement("th");v.className="gePropHeaderCell";v.innerHTML=mxResources.get("value");x.appendChild(v);k.appendChild(x);var A=!1,q=!1,z;for(z in b)if(x=b[z],"function"!=typeof x.isVisible||x.isVisible(e,this)){var E=null!=e.style[z]?mxUtils.htmlEntities(e.style[z]+""):null!=x.getDefaultValue?x.getDefaultValue(e,this):x.defVal;if("separator"==x.type)q=!q;else{if("staticArr"==x.type)x.size=parseInt(e.style[x.sizeProperty]||b[x.sizeProperty].defVal)||0;else if(null!=
-x.dependentProps){for(var C=x.dependentProps,D=[],K=[],v=0;v<C.length;v++){var G=e.style[C[v]];K.push(b[C[v]].subDefVal);D.push(null!=G?G.split(","):[])}x.dependentPropsDefVal=K;x.dependentPropsVals=D}k.appendChild(p(z,E,x,A,q));A=!A}}for(v=0;v<l.length;v++)for(x=l[v],b=x.parentRow,e=0;e<x.values.length;e++)z=p(x.name,x.values[e],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:e,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==e%2,x.flipBkg),b.parentNode.insertBefore(z,
+b,0==e.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var u=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");
+b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return u.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=
+function(a,b,e){function c(a,b,e,c){t.getModel().beginUpdate();try{var d=[],f=[];if(null!=e.index){for(var g=[],m=e.parentRow.nextSibling;m&&m.getAttribute("data-pName")==a;)g.push(m.getAttribute("data-pValue")),m=m.nextSibling;e.index<g.length?null!=c?g.splice(c,1):g[e.index]=b:g.push(b);null!=e.size&&g.length>e.size&&(g=g.slice(0,e.size));b=g.join(",");null!=e.countProperty&&(t.setCellStyles(e.countProperty,g.length,t.getSelectionCells()),d.push(e.countProperty),f.push(g.length))}t.setCellStyles(a,
+b,t.getSelectionCells());d.push(a);f.push(b);if(null!=e.dependentProps)for(a=0;a<e.dependentProps.length;a++){var n=e.dependentPropsDefVal[a],p=e.dependentPropsVals[a];if(p.length>b)p=p.slice(0,b);else for(var l=p.length;l<b;l++)p.push(n);p=p.join(",");t.setCellStyles(e.dependentProps[a],p,t.getSelectionCells());d.push(e.dependentProps[a]);f.push(p)}if("function"==typeof e.onChange)e.onChange(t,b);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",f,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}
+function d(b,e,c){var d=mxUtils.getOffset(a,!0),f=mxUtils.getOffset(b,!0);e.style.position="absolute";e.style.left=f.x-d.x+"px";e.style.top=f.y-d.y+"px";e.style.width=b.offsetWidth+"px";e.style.height=b.offsetHeight-(c?4:0)+"px";e.style.zIndex=5}function f(a,b,e){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,
+function(f){this.editorUi.pickColor(b,function(b){d.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;c(a,b,e)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function g(a,b,e,d,f,g,m){null!=b&&(b=b.split(","),l.push({name:a,values:b,type:e,defVal:d,countProperty:f,parentRow:g,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(u,function(b){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==
+a)n=n.nextSibling,u++;else break;var t={type:e,parentRow:g,index:u,isDeletable:!0,defVal:d,countProperty:f},u=p(a,"",t,0==u%2,m);c(a,d,t);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(a,b,e,c,d,f,g){if(0<d){var m=Array(d);b=null!=b?b.split(","):[];for(var n=0;n<d;n++)m[n]=null!=b[n]?b[n]:null!=c?c:"";l.push({name:a,values:m,type:e,defVal:c,parentRow:f,flipBkg:g,size:d})}return document.createElement("div")}
+function n(a,b,e){var d=document.createElement("input");d.type="checkbox";d.checked="1"==b;mxEvent.addListener(d,"change",function(){c(a,d.checked?"1":"0",e)});return d}function p(b,e,p,t,l){var k=p.dispName,v=p.type,x=document.createElement("tr");x.className="gePropRow"+(l?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";x.setAttribute("data-pName",b);x.setAttribute("data-pValue",e);t=!1;null!=p.index&&(x.setAttribute("data-index",p.index),k=(null!=k?k:"")+"["+p.index+"]",t=!0);var y=document.createElement("td");
+y.className="gePropRowCell";y.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));t&&(y.style.textAlign="right");x.appendChild(y);y=document.createElement("td");y.className="gePropRowCell";if("color"==v)y.appendChild(f(b,e,p));else if("bool"==v||"boolean"==v)y.appendChild(n(b,e,p));else if("enum"==v){var B=p.enumList;for(l=0;l<B.length;l++)if(k=B[l],k.val==e){y.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(y,"click",mxUtils.bind(u,function(){var f=
+document.createElement("select");d(y,f);for(var g=0;g<B.length;g++){var m=B[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(m.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(m.dispName,null,m.dispName));f.appendChild(n)}f.value=e;a.appendChild(f);mxEvent.addListener(f,"change",function(){var a=mxUtils.htmlEntities(f.value);c(b,a,p)});f.focus();mxEvent.addListener(f,"blur",function(){a.removeChild(f)})}))}else"dynamicArr"==v?y.appendChild(g(b,e,p.subType,p.subDefVal,p.countProperty,
+x,l)):"staticArr"==v?y.appendChild(m(b,e,p.subType,p.subDefVal,p.size,x,l)):(y.innerHTML=e,mxEvent.addListener(y,"click",mxUtils.bind(u,function(){function f(){var a=g.value,a=0==a.length&&"string"!=v?0:a;p.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",v="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==v?parseInt(a):a)+"");c(b,a,p)}var g=document.createElement("input");d(y,g,!0);g.value=e;g.className=
+"gePropEditor";"int"!=v&&"float"!=v||p.allowAuto||(g.type="number",g.step="int"==v?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&f()});g.focus();mxEvent.addListener(g,"blur",function(){f()})})));p.isDeletable&&(l=mxUtils.button("-",mxUtils.bind(u,function(a){c(b,"",p,p.index);mxEvent.consume(a)})),l.style.height="16px",l.style.width="25px",l.style["float"]="right",l.className="geColorBtn",
+y.appendChild(l));x.appendChild(y);return x}var u=this,t=this.editorUi.editor.graph,l=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.className="geProperties";k.style.whiteSpace="nowrap";k.style.width="100%";var v=document.createElement("tr");v.className="gePropHeader";var x=document.createElement("th");x.className="gePropHeaderCell";var y=document.createElement("img");y.src=Sidebar.prototype.expandedImage;x.appendChild(y);mxUtils.write(x,mxResources.get("property"));
+v.style.cursor="pointer";var B=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),e;if(u.editorUi.propertiesCollapsed){y.src=Sidebar.prototype.collapsedImage;e="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var d=a.childNodes[c],f=d.nodeName.toUpperCase();"INPUT"!=f&&"SELECT"!=f||a.removeChild(d)}catch(qa){}}else y.src=Sidebar.prototype.expandedImage,e="";for(c=0;c<b.length;c++)b[c].style.display=e};mxEvent.addListener(v,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;
+B()});v.appendChild(x);x=document.createElement("th");x.className="gePropHeaderCell";x.innerHTML=mxResources.get("value");v.appendChild(x);k.appendChild(v);var A=!1,q=!1,z;for(z in b)if(v=b[z],"function"!=typeof v.isVisible||v.isVisible(e,this)){var E=null!=e.style[z]?mxUtils.htmlEntities(e.style[z]+""):null!=v.getDefaultValue?v.getDefaultValue(e,this):v.defVal;if("separator"==v.type)q=!q;else{if("staticArr"==v.type)v.size=parseInt(e.style[v.sizeProperty]||b[v.sizeProperty].defVal)||0;else if(null!=
+v.dependentProps){for(var C=v.dependentProps,D=[],K=[],x=0;x<C.length;x++){var G=e.style[C[x]];K.push(b[C[x]].subDefVal);D.push(null!=G?G.split(","):[])}v.dependentPropsDefVal=K;v.dependentPropsVals=D}k.appendChild(p(z,E,v,A,q));A=!A}}for(x=0;x<l.length;x++)for(v=l[x],b=v.parentRow,e=0;e<v.values.length;e++)z=p(v.name,v.values[e],{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable,index:e,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==e%2,v.flipBkg),b.parentNode.insertBefore(z,
b.nextSibling),b=z;a.appendChild(k);B();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var e=this.editorUi,c=e.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d);
-var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.position="relative";g.style.textAlign="center";for(var m=[],p=0;p<this.defaultColorSchemes.length;p++){var n=document.createElement("div");n.style.display="inline-block";n.style.width="6px";n.style.height="6px";n.style.marginLeft="4px";n.style.marginRight=
-"3px";n.style.borderRadius="3px";n.style.cursor="pointer";n.style.background="transparent";n.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a){mxEvent.addListener(n,"click",mxUtils.bind(this,function(){t(a)}))})(p);mxEvent.add;m.push(n);g.appendChild(n)}var t=mxUtils.bind(this,function(a){null!=this.editorUi.currentScheme&&(m[this.editorUi.currentScheme].style.background="transparent");this.editorUi.currentScheme=a;l(this.defaultColorSchemes[this.editorUi.currentScheme]);m[this.editorUi.currentScheme].style.background=
-"#84d7ff"}),l=mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(a){var b=mxUtils.button("",function(b){c.getModel().beginUpdate();try{for(var d=c.getSelectionCells(),g=0;g<d.length;g++){for(var m=c.getModel().getStyle(d[g]),n=0;n<f.length;n++)m=mxUtils.removeStylename(m,f[n]);var p=c.getModel().isVertex(d[g])?e.initialDefaultVertexStyle:e.initialdefaultEdgeStyle;null!=a?(m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,
+var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.position="relative";g.style.textAlign="center";for(var m=[],n=0;n<this.defaultColorSchemes.length;n++){var p=document.createElement("div");p.style.display="inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight=
+"3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){u(a)}))})(n);mxEvent.add;m.push(p);g.appendChild(p)}var u=mxUtils.bind(this,function(a){null!=this.editorUi.currentScheme&&(m[this.editorUi.currentScheme].style.background="transparent");this.editorUi.currentScheme=a;t(this.defaultColorSchemes[this.editorUi.currentScheme]);m[this.editorUi.currentScheme].style.background=
+"#84d7ff"}),t=mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(a){var b=mxUtils.button("",function(b){c.getModel().beginUpdate();try{for(var d=c.getSelectionCells(),g=0;g<d.length;g++){for(var m=c.getModel().getStyle(d[g]),n=0;n<f.length;n++)m=mxUtils.removeStylename(m,f[n]);var p=c.getModel().isVertex(d[g])?e.initialDefaultVertexStyle:e.initialdefaultEdgeStyle;null!=a?(m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,
null)),mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||(m=""==a.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,null))),mxEvent.isShiftDown(b)||(m=""==a.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null))),!mxEvent.isAltDown(b)&&c.getModel().isVertex(d[g])&&
(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null)))):(m=mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(d[g])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,
mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));c.getModel().setStyle(d[g],m)}}finally{c.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage=
"linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=""==a.fill?mxUtils.getValue(e.initialDefaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(e.initialDefaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),b.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(e.initialDefaultVertexStyle,
mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(e.initialDefaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var g=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),m=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=g;b.style.border="1px solid "+m}d.appendChild(b)});d.innerHTML="";for(var g=0;g<a.length;g++)0<g&&0==mxUtils.mod(g,
-4)&&mxUtils.br(d),b(a[g])});null==this.editorUi.currentScheme?t("dark"==uiTheme?1:0):t(this.editorUi.currentScheme);var p=10>=this.defaultColorSchemes.length?28:8,u=document.createElement("div");u.style.cssText="position:absolute;left:10px;top:8px;bottom:"+p+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
-mxEvent.addListener(u,"click",mxUtils.bind(this,function(){t(mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length))}));var k=document.createElement("div");k.style.cssText="position:absolute;left:202px;top:8px;bottom:"+p+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
-1<this.defaultColorSchemes.length&&(a.appendChild(u),a.appendChild(k));mxEvent.addListener(k,"click",mxUtils.bind(this,function(){t(mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length))}));b(u);b(k);l(this.defaultColorSchemes[this.editorUi.currentScheme]);10>=this.defaultColorSchemes.length&&a.appendChild(g);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),e=null;1==this.editorUi.editor.graph.getSelectionCount()&&(e=mxUtils.button(mxResources.get("editStyle"),
+4)&&mxUtils.br(d),b(a[g])});null==this.editorUi.currentScheme?u("dark"==uiTheme?1:0):u(this.editorUi.currentScheme);var n=10>=this.defaultColorSchemes.length?28:8,l=document.createElement("div");l.style.cssText="position:absolute;left:10px;top:8px;bottom:"+n+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
+mxEvent.addListener(l,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length))}));var k=document.createElement("div");k.style.cssText="position:absolute;left:202px;top:8px;bottom:"+n+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
+1<this.defaultColorSchemes.length&&(a.appendChild(l),a.appendChild(k));mxEvent.addListener(k,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length))}));b(l);b(k);t(this.defaultColorSchemes[this.editorUi.currentScheme]);10>=this.defaultColorSchemes.length&&a.appendChild(g);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),e=null;1==this.editorUi.editor.graph.getSelectionCount()&&(e=mxUtils.button(mxResources.get("editStyle"),
mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),e.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),e.style.width="202px",e.style.marginBottom="2px",a.appendChild(e));var c=this.editorUi.editor.graph,d=c.view.getState(c.getSelectionCell());1==c.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editShape").funct()})),
b.setAttribute("title",mxResources.get("editShape")),b.style.marginBottom="2px",null==e?b.style.width="202px":(e.style.width="100px",b.style.width="100px",b.style.marginLeft="2px"),a.appendChild(b)):b.image&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==e?b.style.width="202px":(e.style.width="100px",b.style.width="100px",b.style.marginLeft=
"2px"),a.appendChild(b));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=urlParams.edge;var x=Graph.prototype.init;
@@ -3192,9 +3196,9 @@ if(null!=b){if("rack"==b.childLayout){var e=new mxStackLayout(this.graph,!1);e.g
2,e.columns=b.tableColumns||2,e.colPercentages=b.colPercentages,e.rowPercentages=b.rowPercentages,e.equalColumns="1"==mxUtils.getValue(b,"equalColumns",e.colPercentages?"0":"1"),e.equalRows="1"==mxUtils.getValue(b,"equalRows",e.rowPercentages?"0":"1"),e.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),e.border=b.tableBorder||e.border,e.marginLeft=b.marginLeft||0,e.marginRight=b.marginRight||0,e.marginTop=b.marginTop||0,e.marginBottom=b.marginBottom||0,e.autoAddCol="1"==mxUtils.getValue(b,
"autoAddCol","0"),e.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",e.autoAddCol?"0":"1"),e.colWidths=b.colWidths||"100",e.rowHeights=b.rowHeights||"50",e}return c.apply(this,arguments)};this.updateGlobalUrlVariables()};var y=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return y.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=
null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=a)for(var b in a)this.globalVars[b]=a[b]}catch(B){null!=window.console&&console.log("Error in vars URL parameter: "+B)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var E=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=E.apply(this,arguments);null==b&&null!=this.globalVars&&(b=this.globalVars[a]);
-return b};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var z=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,b,e,c,d,f,g,m,p,n,t,l){var u=null;l||null==this.themes||"darkTheme"!=this.defaultThemeName||(u=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),
-this.refresh());var k=z.apply(this,arguments);if(t&&null!=this.extFonts&&0<this.extFonts.length){var x=k.ownerDocument,v=null!=x.createElementNS?x.createElementNS(mxConstants.NS_SVG,"style"):x.createElement("style");null!=x.setAttributeNS?v.setAttributeNS("type","text/css"):v.setAttribute("type","text/css");for(var y="",B="",A=0;A<this.extFonts.length;A++){var q=this.extFonts[A].name,E=this.extFonts[A].url;0==E.indexOf(Editor.GOOGLE_FONTS)?y+="@import url("+E+");\n":B+='@font-face {\nfont-family: "'+
-q+'";\nsrc: url("'+E+'");\n}\n'}v.appendChild(x.createTextNode(y+B));k.getElementsByTagName("defs")[0].appendChild(v)}null!=u&&(this.stylesheet=u,this.refresh());return k};var C=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=C.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var b=a.drawText;a.drawText=function(a,e){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&&(mxUtils.isNode(a.text.value)||a.text.dialect==
+return b};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var z=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,b,e,c,d,f,g,m,n,p,u,l){var t=null;l||null==this.themes||"darkTheme"!=this.defaultThemeName||(t=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),
+this.refresh());var k=z.apply(this,arguments);if(u&&null!=this.extFonts&&0<this.extFonts.length){var v=k.ownerDocument,x=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"style"):v.createElement("style");null!=v.setAttributeNS?x.setAttributeNS("type","text/css"):x.setAttribute("type","text/css");for(var y="",B="",A=0;A<this.extFonts.length;A++){var q=this.extFonts[A].name,E=this.extFonts[A].url;0==E.indexOf(Editor.GOOGLE_FONTS)?y+="@import url("+E+");\n":B+='@font-face {\nfont-family: "'+
+q+'";\nsrc: url("'+E+'");\n}\n'}x.appendChild(v.createTextNode(y+B));k.getElementsByTagName("defs")[0].appendChild(x)}null!=t&&(this.stylesheet=t,this.refresh());return k};var C=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=C.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var b=a.drawText;a.drawText=function(a,e){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&&(mxUtils.isNode(a.text.value)||a.text.dialect==
mxConstants.DIALECT_STRICTHTML)){var c=a.text.getContentNode();if(null!=c){c=c.cloneNode(!0);if(c.getElementsByTagNameNS)for(var d=c.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<d.length;)d[0].parentNode.removeChild(d[0]);null!=c.innerHTML&&(d=a.text.value,a.text.value=c.innerHTML,b.apply(this,arguments),a.text.value=d)}}else b.apply(this,arguments)}}return a};var A=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){A.apply(this,
arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),
this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var D=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){D.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),
@@ -3203,8 +3207,8 @@ null!=a.actions)){for(var b=0;b<a.actions.length;b++){var e=a.actions[b];if(null
this.getLinkForCell(b);null!=e&&"data:action/json,"==e.substring(0,17)&&this.setLinkForCell(b,this.updateCustomLink(a,e));if(this.isHtmlLabel(b)){var c=document.createElement("div");c.innerHTML=this.sanitizeHtml(this.getLabel(b));for(var d=c.getElementsByTagName("a"),f=!1,g=0;g<d.length;g++)e=d[g].getAttribute("href"),null!=e&&"data:action/json,"==e.substring(0,17)&&(d[g].setAttribute("href",this.updateCustomLink(a,e)),f=!0);f&&this.labelChanged(b,c.innerHTML)}};Graph.prototype.updateCustomLink=function(a,
b){if("data:action/json,"==b.substring(0,17))try{var e=JSON.parse(b.substring(17));null!=e.actions&&(this.updateCustomLinkActions(a,e.actions),b="data:action/json,"+JSON.stringify(e))}catch(L){}return b};Graph.prototype.updateCustomLinkActions=function(a,b){for(var e=0;e<b.length;e++){var c=b[e];this.updateCustomLinkAction(a,c.toggle);this.updateCustomLinkAction(a,c.show);this.updateCustomLinkAction(a,c.hide);this.updateCustomLinkAction(a,c.select);this.updateCustomLinkAction(a,c.highlight);this.updateCustomLinkAction(a,
c.scroll)}};Graph.prototype.updateCustomLinkAction=function(a,b){if(null!=b&&null!=b.cells){for(var e=[],c=0;c<b.cells.length;c++)if("*"==b.cells[c])e.push(b.cells[c]);else{var d=a[b.cells[c]];null!=d?""!=d&&e.push(d):e.push(b.cells[c])}b.cells=e}};Graph.prototype.getCellsForAction=function(a,b){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags,null,null,b))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var e=0;e<a.length;e++)if("*"==a[e])var c=this.getDefaultParent(),
-b=b.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var d=this.model.getCell(a[e]);null!=d&&b.push(d)}return b};Graph.prototype.getCellsForTags=function(a,b,e,c){var d=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());e=null!=e?e:"tags";for(var f=0,g={},m=0;m<a.length;m++)0<a[m].length&&(g[a[m].toLowerCase()]=!0,f++);for(m=0;m<b.length;m++)if(c&&this.model.getParent(b[m])==this.model.root||this.model.isVertex(b[m])||this.model.isEdge(b[m])){var p=null!=
-b[m].value&&"object"==typeof b[m].value?mxUtils.trim(b[m].value.getAttribute(e)||""):"",n=!1;if(0<p.length){if(p=p.toLowerCase().split(" "),p.length>=a.length){for(var t=n=0;t<p.length&&n<f;t++)null!=g[p[t]]&&n++;n=n==f}}else n=0==a.length;n&&d.push(b[m])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();
+b=b.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var d=this.model.getCell(a[e]);null!=d&&b.push(d)}return b};Graph.prototype.getCellsForTags=function(a,b,e,c){var d=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());e=null!=e?e:"tags";for(var f=0,g={},m=0;m<a.length;m++)0<a[m].length&&(g[a[m].toLowerCase()]=!0,f++);for(m=0;m<b.length;m++)if(c&&this.model.getParent(b[m])==this.model.root||this.model.isVertex(b[m])||this.model.isEdge(b[m])){var n=null!=
+b[m].value&&"object"==typeof b[m].value?mxUtils.trim(b[m].value.getAttribute(e)||""):"",p=!1;if(0<n.length){if(n=n.toLowerCase().split(" "),n.length>=a.length){for(var u=p=0;u<n.length&&p<f;u++)null!=g[n[u]]&&p++;p=p==f}}else p=0==a.length;p&&d.push(b[m])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();
try{for(var e=0;e<a.length;e++)this.model.setVisible(a[e],b)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,b,e,c){for(var d=0;d<a.length;d++)this.highlightCell(a[d],b,e,c)};Graph.prototype.highlightCell=function(a,b,e,c){b=null!=b?b:mxConstants.DEFAULT_VALID_COLOR;e=null!=e?e:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),f=new mxCellHighlight(this,b,d,!1);null!=c&&(f.opacity=c);f.highlight(a);window.setTimeout(function(){null!=
f.shape&&(mxUtils.setPrefixedStyle(f.shape.node.style,"transition","all 1200ms ease-in-out"),f.shape.node.style.opacity=0);window.setTimeout(function(){f.destroy()},1200)},e)}};Graph.prototype.addSvgShadow=function(a,b,e){e=null!=e?e:!1;var c=a.ownerDocument,d=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"filter"):c.createElement("filter");d.setAttribute("id",this.shadowId);var f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):c.createElement("feGaussianBlur");
f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",this.svgShadowBlur);f.setAttribute("result","blur");d.appendChild(f);f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feOffset"):c.createElement("feOffset");f.setAttribute("in","blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");d.appendChild(f);f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feFlood"):c.createElement("feFlood");
@@ -3222,28 +3226,28 @@ STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people
"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=
[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.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 G=mxMarker.createMarker;mxMarker.createMarker=
-function(a,b,e,c,d,f,g,m,p,n){if(null!=e&&null==mxMarker.markers[e]){var t=this.getPackageForType(e);null!=t&&mxStencilRegistry.getStencil(t)}return G.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function e(){x.value=Math.max(1,Math.min(m,Math.max(parseInt(x.value),parseInt(k.value))));k.value=Math.max(1,Math.min(m,Math.min(parseInt(x.value),parseInt(k.value))))}function c(b){function e(b,e,f){var g=b.useCssTransforms,m=b.currentTranslate,n=b.currentScale,p=b.view.translate,t=
-b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var l=b.getGraphBounds(),k=0,x=0,v=ia.get(),u=1/b.pageScale,q=A.checked;if(q)var u=parseInt(K.value),z=parseInt(R.value),u=Math.min(v.height*z/(l.height/b.view.scale),v.width*u/(l.width/b.view.scale));else u=parseInt(y.value)/(100*b.pageScale),isNaN(u)&&(c=1/b.pageScale,y.value="100 %");v=mxRectangle.fromRectangle(v);v.width=Math.ceil(v.width*
-c);v.height=Math.ceil(v.height*c);u*=c;!q&&b.pageVisible?(l=b.getPageLayout(),k-=l.x*v.width,x-=l.y*v.height):q=!0;if(null==e){e=PrintDialog.createPrintPreview(b,u,v,0,k,x,q);e.pageSelector=!1;e.mathEnabled=!1;k=a.getCurrentFile();null!=k&&(e.title=k.getTitle());var B=e.writeHead;e.writeHead=function(e){B.apply(this,arguments);mxClient.IS_GC&&(e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),e.writeln("}"),e.writeln("</style>"));
+function(a,b,e,c,d,f,g,m,n,p){if(null!=e&&null==mxMarker.markers[e]){var u=this.getPackageForType(e);null!=u&&mxStencilRegistry.getStencil(u)}return G.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function e(){v.value=Math.max(1,Math.min(m,Math.max(parseInt(v.value),parseInt(k.value))));k.value=Math.max(1,Math.min(m,Math.min(parseInt(v.value),parseInt(k.value))))}function c(b){function e(b,e,f){var g=b.useCssTransforms,m=b.currentTranslate,p=b.currentScale,n=b.view.translate,u=
+b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var l=b.getGraphBounds(),k=0,v=0,t=ia.get(),x=1/b.pageScale,q=A.checked;if(q)var x=parseInt(K.value),z=parseInt(R.value),x=Math.min(t.height*z/(l.height/b.view.scale),t.width*x/(l.width/b.view.scale));else x=parseInt(y.value)/(100*b.pageScale),isNaN(x)&&(c=1/b.pageScale,y.value="100 %");t=mxRectangle.fromRectangle(t);t.width=Math.ceil(t.width*
+c);t.height=Math.ceil(t.height*c);x*=c;!q&&b.pageVisible?(l=b.getPageLayout(),k-=l.x*t.width,v-=l.y*t.height):q=!0;if(null==e){e=PrintDialog.createPrintPreview(b,x,t,0,k,v,q);e.pageSelector=!1;e.mathEnabled=!1;k=a.getCurrentFile();null!=k&&(e.title=k.getTitle());var B=e.writeHead;e.writeHead=function(e){B.apply(this,arguments);mxClient.IS_GC&&(e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),e.writeln("}"),e.writeln("</style>"));
null!=a.editor.fontCss&&(e.writeln('<style type="text/css">'),e.writeln(a.editor.fontCss),e.writeln("</style>"));if(null!=b.extFonts)for(var c=0;c<b.extFonts.length;c++){var d=b.extFonts[c].name,f=b.extFonts[c].url;0==f.indexOf(Editor.GOOGLE_FONTS)?e.writeln('<link rel="stylesheet" href="'+f+'" charset="UTF-8" type="text/css">'):(e.writeln('<style type="text/css">'),e.writeln('@font-face {\n\tfont-family: "'+d+'";\n\tsrc: url("'+f+'");\n}'),e.writeln("</style>"))}};if("undefined"!==typeof MathJax){var E=
-e.renderPage;e.renderPage=function(b,e,c,d,f,g){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject;var n=E.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:n.className="geDisableMathJax";return n}}k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());e.open(null,null,f,!0);null!=k&&(d.stylesheet=k,d.refresh())}else{v=
-b.background;if(null==v||""==v||v==mxConstants.NONE)v="#ffffff";e.backgroundColor=v;e.autoOrigin=q;e.appendGraph(b,u,k,x,f,!0);if(null!=b.extFonts&&null!=e.wnd)for(f=0;f<b.extFonts.length;f++)k=b.extFonts[f].name,x=b.extFonts[f].url,0==x.indexOf(Editor.GOOGLE_FONTS)?e.wnd.document.writeln('<link rel="stylesheet" href="'+x+'" charset="UTF-8" type="text/css">'):(e.wnd.document.writeln('<style type="text/css">'),e.wnd.document.writeln('@font-face {\n\tfont-family: "'+k+'";\n\tsrc: url("'+x+'");\n}'),
-e.wnd.document.writeln("</style>"))}g&&(b.useCssTransforms=g,b.currentTranslate=m,b.currentScale=n,b.view.translate=p,b.view.scale=t);return e}var c=parseInt(ka.value)/100;isNaN(c)&&(c=1,ka.value="100 %");var c=.75*c,f=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(f=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());var g=k.value,m=x.value,n=!t.checked,l=null;n&&(n=g==p&&m==p);if(!n&&null!=a.pages&&a.pages.length){var v=0,n=a.pages.length-1;t.checked||(v=parseInt(g)-1,n=parseInt(m)-
-1);for(var u=v;u<=n;u++){var q=a.pages[u],g=q==a.currentPage?d:null;if(null==g){var g=a.createTemporaryGraph(d.stylesheet),m=!0,v=!1,z=null,B=null;null==q.viewState&&null==q.root&&a.updatePageRoot(q);null!=q.viewState&&(m=q.viewState.pageVisible,v=q.viewState.mathEnabled,z=q.viewState.background,B=q.viewState.backgroundImage,g.extFonts=q.viewState.extFonts);g.background=z;g.backgroundImage=null!=B?new mxImage(B.src,B.width,B.height):null;g.pageVisible=m;g.mathEnabled=v;var E=g.getGlobalVariable;g.getGlobalVariable=
-function(b){return"page"==b?q.getName():"pagenumber"==b?u+1:"pagecount"==b?null!=a.pages?a.pages.length:1:E.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(q);g.model.setRoot(q.root)}l=e(g,l,u!=n);g!=d&&g.container.parentNode.removeChild(g.container)}}else l=e(d);null==l?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(l.mathEnabled&&(n=l.wnd.document,b&&(l.wnd.IMMEDIATE_PRINT=!0),n.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),
-l.closeDocument(),!l.mathEnabled&&b&&PrintDialog.printPreview(l));null!=f&&(d.stylesheet=f,d.refresh())}var d=a.editor.graph,f=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,b||mxResources.get("print"));f.appendChild(g);var m=1,p=1,n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText=
-"margin-right:8px;margin-bottom:8px;";t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("name","pages-printdialog");n.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));n.appendChild(g);mxUtils.br(n);var l=t.cloneNode(!0);t.setAttribute("checked","checked");l.setAttribute("value","range");n.appendChild(l);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");n.appendChild(g);var k=document.createElement("input");
-k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";n.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));n.appendChild(g);var x=k.cloneNode(!0);n.appendChild(x);mxEvent.addListener(k,"focus",function(){l.checked=!0});mxEvent.addListener(x,"focus",function(){l.checked=!0});mxEvent.addListener(k,"change",e);mxEvent.addListener(x,"change",e);if(null!=a.pages&&(m=a.pages.length,
-null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){p=g+1;k.value=p;x.value=p;break}k.setAttribute("max",m);x.setAttribute("max",m);a.isPagesEnabled()?1<m&&(f.appendChild(n),l.checked=!0):l.checked=!0;var v=document.createElement("div");v.style.marginBottom="10px";var u=document.createElement("input");u.style.marginRight="8px";u.setAttribute("value","adjust");u.setAttribute("type","radio");u.setAttribute("name","printZoom");v.appendChild(u);g=document.createElement("span");
-mxUtils.write(g,mxResources.get("adjustTo"));v.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width="50px";v.appendChild(y);mxEvent.addListener(y,"focus",function(){u.checked=!0});f.appendChild(v);var n=n.cloneNode(!1),A=u.cloneNode(!0);A.setAttribute("value","fit");u.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";
-g.appendChild(A);n.appendChild(g);v=document.createElement("table");v.style.display="inline-block";var q=document.createElement("tbody"),z=document.createElement("tr"),E=z.cloneNode(!0),C=document.createElement("td"),D=C.cloneNode(!0),G=C.cloneNode(!0),F=C.cloneNode(!0),J=C.cloneNode(!0),I=C.cloneNode(!0);C.style.textAlign="right";F.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");
+e.renderPage;e.renderPage=function(b,e,c,d,f,g){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject;var p=E.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:p.className="geDisableMathJax";return p}}k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());e.open(null,null,f,!0);null!=k&&(d.stylesheet=k,d.refresh())}else{t=
+b.background;if(null==t||""==t||t==mxConstants.NONE)t="#ffffff";e.backgroundColor=t;e.autoOrigin=q;e.appendGraph(b,x,k,v,f,!0);if(null!=b.extFonts&&null!=e.wnd)for(f=0;f<b.extFonts.length;f++)k=b.extFonts[f].name,v=b.extFonts[f].url,0==v.indexOf(Editor.GOOGLE_FONTS)?e.wnd.document.writeln('<link rel="stylesheet" href="'+v+'" charset="UTF-8" type="text/css">'):(e.wnd.document.writeln('<style type="text/css">'),e.wnd.document.writeln('@font-face {\n\tfont-family: "'+k+'";\n\tsrc: url("'+v+'");\n}'),
+e.wnd.document.writeln("</style>"))}g&&(b.useCssTransforms=g,b.currentTranslate=m,b.currentScale=p,b.view.translate=n,b.view.scale=u);return e}var c=parseInt(ka.value)/100;isNaN(c)&&(c=1,ka.value="100 %");var c=.75*c,f=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(f=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());var g=k.value,m=v.value,p=!u.checked,l=null;p&&(p=g==n&&m==n);if(!p&&null!=a.pages&&a.pages.length){var t=0,p=a.pages.length-1;u.checked||(t=parseInt(g)-1,p=parseInt(m)-
+1);for(var x=t;x<=p;x++){var q=a.pages[x],g=q==a.currentPage?d:null;if(null==g){var g=a.createTemporaryGraph(d.stylesheet),m=!0,t=!1,z=null,B=null;null==q.viewState&&null==q.root&&a.updatePageRoot(q);null!=q.viewState&&(m=q.viewState.pageVisible,t=q.viewState.mathEnabled,z=q.viewState.background,B=q.viewState.backgroundImage,g.extFonts=q.viewState.extFonts);g.background=z;g.backgroundImage=null!=B?new mxImage(B.src,B.width,B.height):null;g.pageVisible=m;g.mathEnabled=t;var E=g.getGlobalVariable;g.getGlobalVariable=
+function(b){return"page"==b?q.getName():"pagenumber"==b?x+1:"pagecount"==b?null!=a.pages?a.pages.length:1:E.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(q);g.model.setRoot(q.root)}l=e(g,l,x!=p);g!=d&&g.container.parentNode.removeChild(g.container)}}else l=e(d);null==l?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(l.mathEnabled&&(p=l.wnd.document,b&&(l.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),
+l.closeDocument(),!l.mathEnabled&&b&&PrintDialog.printPreview(l));null!=f&&(d.stylesheet=f,d.refresh())}var d=a.editor.graph,f=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,b||mxResources.get("print"));f.appendChild(g);var m=1,n=1,p=document.createElement("div");p.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");p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));p.appendChild(g);mxUtils.br(p);var l=u.cloneNode(!0);u.setAttribute("checked","checked");l.setAttribute("value","range");p.appendChild(l);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");p.appendChild(g);var k=document.createElement("input");
+k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";p.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var v=k.cloneNode(!0);p.appendChild(v);mxEvent.addListener(k,"focus",function(){l.checked=!0});mxEvent.addListener(v,"focus",function(){l.checked=!0});mxEvent.addListener(k,"change",e);mxEvent.addListener(v,"change",e);if(null!=a.pages&&(m=a.pages.length,
+null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;k.value=n;v.value=n;break}k.setAttribute("max",m);v.setAttribute("max",m);a.isPagesEnabled()?1<m&&(f.appendChild(p),l.checked=!0):l.checked=!0;var t=document.createElement("div");t.style.marginBottom="10px";var x=document.createElement("input");x.style.marginRight="8px";x.setAttribute("value","adjust");x.setAttribute("type","radio");x.setAttribute("name","printZoom");t.appendChild(x);g=document.createElement("span");
+mxUtils.write(g,mxResources.get("adjustTo"));t.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width="50px";t.appendChild(y);mxEvent.addListener(y,"focus",function(){x.checked=!0});f.appendChild(t);var p=p.cloneNode(!1),A=x.cloneNode(!0);A.setAttribute("value","fit");x.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";
+g.appendChild(A);p.appendChild(g);t=document.createElement("table");t.style.display="inline-block";var q=document.createElement("tbody"),z=document.createElement("tr"),E=z.cloneNode(!0),C=document.createElement("td"),D=C.cloneNode(!0),G=C.cloneNode(!0),F=C.cloneNode(!0),J=C.cloneNode(!0),I=C.cloneNode(!0);C.style.textAlign="right";F.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");
K.setAttribute("min","1");K.setAttribute("type","number");K.style.width="40px";D.appendChild(K);g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsAcross"));G.appendChild(g);mxUtils.write(F,mxResources.get("fitToBy"));var R=K.cloneNode(!0);J.appendChild(R);mxEvent.addListener(K,"focus",function(){A.checked=!0});mxEvent.addListener(R,"focus",function(){A.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));I.appendChild(g);z.appendChild(C);
-z.appendChild(D);z.appendChild(G);E.appendChild(F);E.appendChild(J);E.appendChild(I);q.appendChild(z);q.appendChild(E);v.appendChild(q);n.appendChild(v);f.appendChild(n);n=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));n.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ia=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);
-n.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));n.appendChild(g);var ka=document.createElement("input");ka.style.cssText="margin:0 8px 0 8px;";ka.setAttribute("value","100 %");ka.style.width="60px";n.appendChild(ka);f.appendChild(n);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&g.appendChild(n);a.isOffline()||
-(v=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),v.className="geBtn",g.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),v.className="geBtn",g.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});v.className="geBtn gePrimaryBtn";g.appendChild(v);a.editor.cancelFirst||g.appendChild(n);
+z.appendChild(D);z.appendChild(G);E.appendChild(F);E.appendChild(J);E.appendChild(I);q.appendChild(z);q.appendChild(E);t.appendChild(q);p.appendChild(t);f.appendChild(p);p=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));p.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ia=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);
+p.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));p.appendChild(g);var ka=document.createElement("input");ka.style.cssText="margin:0 8px 0 8px;";ka.setAttribute("value","100 %");ka.style.width="60px";p.appendChild(ka);f.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||
+(t=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),t.className="geBtn",g.appendChild(t));PrintDialog.previewEnabled&&(t=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),t.className="geBtn",g.appendChild(t));t=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});t.className="geBtn gePrimaryBtn";g.appendChild(t);a.editor.cancelFirst||g.appendChild(p);
f.appendChild(g);this.container=f};var F=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)):(F.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))};Editor.prototype.useCanvasForExport=!1;try{var I=document.createElement("canvas"),
-J=new Image;J.onload=function(){try{I.getContext("2d").drawImage(J,0,0);var a=I.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(K){}};J.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
+J=new Image;J.onload=function(){try{I.getContext("2d").drawImage(J,0,0);var a=I.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(K){}};J.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}})();
(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars=
"\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&
!EditorUi.isElectronApp&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,
@@ -3266,11 +3270,11 @@ EditorUi.prototype.isPngData=function(a){return 8<a.length&&137==a.charCodeAt(0)
">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var f=mxUtils.parseXml(b),n=this.editor.extractGraphModel(f.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),e=null!=n?mxUtils.getXml(n):""}catch(v){}return e};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=Graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var n=this.updatePageRoot(new DiagramPage(d[f]));
null==n.getName()&&n.setName(mxResources.get("pageWithNumber",[f+1]));b.model.execute(new ChangePage(this,n,0==f?n:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
-this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)b.model.execute(new ChangePage(this,c[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,e,c,d,f,n,l,t,k,y,q){e=null!=e?e:this.editor.graph;f=null!=f?f:!1;k=null!=k?k:!0;var b,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?b="_blank":g=b=d;if(null==a)return"";var m=a;if("mxfile"!=m.nodeName.toLowerCase()){if(q){var p=a.ownerDocument.createElement("diagram");p.setAttribute("id",
+this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)b.model.execute(new ChangePage(this,c[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,e,c,d,f,n,l,u,k,y,q){e=null!=e?e:this.editor.graph;f=null!=f?f:!1;k=null!=k?k:!0;var b,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?b="_blank":g=b=d;if(null==a)return"";var m=a;if("mxfile"!=m.nodeName.toLowerCase()){if(q){var p=a.ownerDocument.createElement("diagram");p.setAttribute("id",
Editor.guid());p.appendChild(a)}else{p=Graph.zapGremlins(mxUtils.getXml(a));m=Graph.compress(p);if(Graph.decompress(m)!=p)return p;p=a.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,m)}m=a.ownerDocument.createElement("mxfile");m.appendChild(p)}y?(m=m.cloneNode(!0),m.removeAttribute("modified"),m.removeAttribute("host"),m.removeAttribute("agent"),m.removeAttribute("etag"),m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),
m.removeAttribute("type")):(m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("pages"),m.removeAttribute("type"),mxClient.IS_CHROMEAPP?m.setAttribute("host","Chrome"):EditorUi.isElectronApp?m.setAttribute("host","Electron"):m.setAttribute("host",window.location.hostname),m.setAttribute("modified",(new Date).toISOString()),m.setAttribute("agent",navigator.appVersion),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),
a=null!=c?c.getMode():this.mode,null!=a&&m.setAttribute("type",a),1<m.getElementsByTagName("diagram").length&&null!=this.pages&&m.setAttribute("pages",this.pages.length));q=q?mxUtils.getPrettyXml(m):mxUtils.getXml(m);if(!n&&!f&&(l||null!=c&&/(\.html)$/i.test(c.getTitle())))q=this.getHtml2(mxUtils.getXml(m),e,null!=c?c.getTitle():null,b,g);else if(n||!f&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),q=this.getEmbeddedSvg(q,e,
-d,null,t,k,g);return q};EditorUi.prototype.getXmlFileData=function(a,e,c){a=null!=a?a:!0;e=null!=e?e:!1;c=null!=c?c:!Editor.compressXml;var b=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var e=a.getElementsByTagName("mxGraphModel"),e=0<e.length?e[0]:null;null==e&&c?(e=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<e.length&&(e=Graph.decompress(e),null!=e&&0<e.length&&a.appendChild(mxUtils.parseXml(e).documentElement))):null==e||c?a=a.cloneNode(!0):
+d,null,u,k,g);return q};EditorUi.prototype.getXmlFileData=function(a,e,c){a=null!=a?a:!0;e=null!=e?e:!1;c=null!=c?c:!Editor.compressXml;var b=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var e=a.getElementsByTagName("mxGraphModel"),e=0<e.length?e[0]:null;null==e&&c?(e=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<e.length&&(e=Graph.decompress(e),null!=e&&0<e.length&&a.appendChild(mxUtils.parseXml(e).documentElement))):null==e||c?a=a.cloneNode(!0):
(a=a.cloneNode(!1),mxUtils.setTextContent(a,Graph.compressNode(e)));b.appendChild(a)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(b)),b=this.fileNode.cloneNode(!1),e)a(this.currentPage.node);else for(e=0;e<this.pages.length;e++){if(this.currentPage!=this.pages[e]&&this.pages[e].needsUpdate){var d=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[e].root));this.editor.graph.saveViewState(this.pages[e].viewState,
d);EditorUi.removeChildNodes(this.pages[e].node);mxUtils.setTextContent(this.pages[e].node,Graph.compressNode(d));delete this.pages[e].needsUpdate}a(this.pages[e].node)}return b};EditorUi.prototype.anonymizeString=function(a,e){for(var b=[],c=0;c<a.length;c++){var d=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)?b.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?b.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?b.push(String.fromCharCode(97+Math.round(25*Math.random()))):
/\s/.test(d)?b.push(" "):b.push("?"):b.push(e?"0":Math.round(9*Math.random()))}return b.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var c=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));a[EditorUi.DIFF_INSERT][b].data=mxUtils.getXml(c)}catch(n){a[EditorUi.DIFF_INSERT][b].data=
@@ -3278,8 +3282,8 @@ n.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var d in a[EditorUi.DIFF_UPDATE]
delete f.cells[a]}}),b(EditorUi.DIFF_INSERT),b(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete a[EditorUi.DIFF_UPDATE][d]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,e){if(null!=a.attributes)for(var b=0;b<a.attributes.length;b++)"as"!=a.attributes[b].name&&a.setAttribute(a.attributes[b].name,this.anonymizeString(a.attributes[b].value,e));if(null!=a.childNodes)for(b=
0;b<a.childNodes.length;b++)this.anonymizeAttributes(a.childNodes[b],e)};EditorUi.prototype.anonymizeNode=function(a,e){for(var b=a.getElementsByTagName("mxCell"),c=0;c<b.length;c++)null!=b[c].getAttribute("value")&&b[c].setAttribute("value","["+b[c].getAttribute("value").length+"]"),null!=b[c].getAttribute("xmlValue")&&b[c].setAttribute("xmlValue","["+b[c].getAttribute("xmlValue").length+"]"),null!=b[c].getAttribute("style")&&b[c].setAttribute("style","["+b[c].getAttribute("style").length+"]"),null!=
b[c].parentNode&&"root"!=b[c].parentNode.nodeName&&null!=b[c].parentNode.parentNode&&(b[c].setAttribute("id",b[c].parentNode.getAttribute("id")),b[c].parentNode.parentNode.replaceChild(b[c],b[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(),
-this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,e,c,d,f,n,l,t,k,y){f=null!=f?f:!0;n=null!=n?n:!1;var b=this.editor.graph;if(e||!a&&null!=k&&/(\.svg)$/i.test(k.getTitle()))if(y=
-!1,null!=this.pages&&this.currentPage!=this.pages[0]){var g=b.getGlobalVariable,b=this.createTemporaryGraph(b.getStylesheet()),m=this.pages[0];b.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(b.container);b.model.setRoot(m.root)}l=null!=l?l:this.getXmlFileData(f,n,y);k=null!=k?k:this.getCurrentFile();a=this.createFileData(l,b,k,window.location.href,a,e,c,d,f,t,y);b!=this.editor.graph&&b.container.parentNode.removeChild(b.container);
+this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,e,c,d,f,n,l,u,k,y){f=null!=f?f:!0;n=null!=n?n:!1;var b=this.editor.graph;if(e||!a&&null!=k&&/(\.svg)$/i.test(k.getTitle()))if(y=
+!1,null!=this.pages&&this.currentPage!=this.pages[0]){var g=b.getGlobalVariable,b=this.createTemporaryGraph(b.getStylesheet()),m=this.pages[0];b.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(b.container);b.model.setRoot(m.root)}l=null!=l?l:this.getXmlFileData(f,n,y);k=null!=k?k:this.getCurrentFile();a=this.createFileData(l,b,k,window.location.href,a,e,c,d,f,u,y);b!=this.editor.graph&&b.container.parentNode.removeChild(b.container);
return a};EditorUi.prototype.getHtml=function(a,e,c,d,f,n){n=null!=n?n:!0;var b=null,g=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=e){var b=n?e.getGraphBounds():e.getBoundingBox(e.getSelectionCells()),m=e.view.scale;n=Math.floor(b.x/m-e.view.translate.x);m=Math.floor(b.y/m-e.view.translate.y);b=e.background;null==f&&(e=this.getBasenames().join(";"),0<e.length&&(g=EditorUi.drawHost+"/embed.js?s="+e));a.setAttribute("x0",n);a.setAttribute("y0",m)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
"1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",d));null!=f&&(f=f.replace(/&/g,"&amp;"));a=null!=a?Graph.zapGremlins(mxUtils.getXml(a)):"";d=Graph.compress(a);Graph.decompress(d)!=a&&(d=encodeURIComponent(a));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+
(null==f?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=b&&b!=mxConstants.NONE?' style="background-color:'+b+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+d+"</div>\n</div>\n"+(null==f?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
@@ -3288,28 +3292,28 @@ return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,
mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==f?'<script type="text/javascript" src="'+e+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:
null;var b=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(b)throw Error(mxResources.get("notADiagramFile")+" ("+b+")");b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){var c=null;this.fileNode=a;this.pages=[];for(var d=0;d<b.length;d++)null==b[d].getAttribute("id")&&b[d].setAttribute("id",d),a=new DiagramPage(b[d]),
null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==urlParams["page-id"]&&(c=a);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
-[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var n=this.editor.graph.getModel(),l=n.getChildren(n.root),d=0;d<l.length;d++){var t=l[d];n.setVisible(t,a[t.id]||!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():
-this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,e,c,d,f,n,l,t,k,y,q){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var b=this.getBaseFilename(!f),
+[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var n=this.editor.graph.getModel(),l=n.getChildren(n.root),d=0;d<l.length;d++){var u=l[d];n.setVisible(u,a[u.id]||!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():
+this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,e,c,d,f,n,l,u,k,y,q){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var b=this.getBaseFilename(!f),
g=b+"."+a;if("xml"==a){var m='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,d,f,null,null,null,e);this.saveData(g,a,m,"text/xml")}else if("html"==a)m=this.getHtml2(this.getFileData(!0),this.editor.graph,b),this.saveData(g,a,m,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g=b+".png":"jpeg"==a&&(g=b+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(b,e){try{var c=this.editor.graph.pageVisible;
-null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(b,a,d,e,l,f,t,k,y,q);this.editor.graph.pageVisible=c;return g}catch(L){this.handleError(L)}}));else{var p=null,x=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var v=this.editor.graph.background;if(l||v==mxConstants.NONE)v=
-null;var E=this.editor.graph.getSvg(v,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(E);this.editor.convertImages(E,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();x('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=b+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();x(a)}),d)}}catch(J){this.handleError(J)}};EditorUi.prototype.createDownloadRequest=
-function(a,e,c,d,f,n,l,t,k,y){var b=this.editor.graph,g=b.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==n?!1:"xmlpng"!=e);var m="",p="";if(g.width*g.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?"1":"0";"pdf"==e&&0==n&&(p="&allPages=1");if("xmlpng"==e&&(y="1",e="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){m="&from="+n;break}n=b.background;"png"!=e&&"pdf"!=e||!f?f||
-null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;f={globalVars:b.getExportVariables()};k&&(f.grid={size:b.gridSize,steps:b.view.gridSteps,color:b.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+e+m+p+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+d+"&embedXml="+y+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(f))+(null!=l?"&scale="+l:"")+(null!=t?"&border="+t:""))};EditorUi.prototype.setMode=function(a,
+null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(b,a,d,e,l,f,u,k,y,q);this.editor.graph.pageVisible=c;return g}catch(L){this.handleError(L)}}));else{var p=null,v=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var x=this.editor.graph.background;if(l||x==mxConstants.NONE)x=
+null;var E=this.editor.graph.getSvg(x,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(E);this.editor.convertImages(E,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();v('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=b+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();v(a)}),d)}}catch(J){this.handleError(J)}};EditorUi.prototype.createDownloadRequest=
+function(a,e,c,d,f,n,l,u,k,y){var b=this.editor.graph,g=b.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==n?!1:"xmlpng"!=e);var m="",p="";if(g.width*g.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?"1":"0";"pdf"==e&&0==n&&(p="&allPages=1");if("xmlpng"==e&&(y="1",e="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){m="&from="+n;break}n=b.background;"png"!=e&&"pdf"!=e||!f?f||
+null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;f={globalVars:b.getExportVariables()};k&&(f.grid={size:b.gridSize,steps:b.view.gridSteps,color:b.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+e+m+p+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+d+"&embedXml="+y+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(f))+(null!=l?"&scale="+l:"")+(null!=u?"&border="+u:""))};EditorUi.prototype.setMode=function(a,
e){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,e,c){var b=window.location.hash,d=mxUtils.bind(this,function(c){var d=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<d.length&&(d+="\n"),d+=c);c=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return b};this.fileLoaded(c);"csv"==a.format&&this.importCsv(d,mxUtils.bind(this,function(a){this.editor.undoManager.clear();
this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var f=null!=a.interval?parseInt(a.interval):6E4,g=null,m=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),
n=mxUtils.bind(this,function(){window.clearTimeout(g);g=window.setTimeout(m,f)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();m()}));n();m()}null!=e&&e()});if(null!=a.url&&0<a.url.length){var f=a.url;/^https?:\/\//.test(f)&&!this.editor.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));this.editor.loadUrl(f,mxUtils.bind(this,function(a){d(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else d("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=
-new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,e){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,n=f.getModel();n.beginUpdate();var l=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var t=n.getCell(a.getAttribute("id"));if(null!=t){try{var k=a.getAttribute("value");if(null!=k){var y=
-mxUtils.parseXml(k).documentElement;if(null!=y)if("1"==y.getAttribute("replace-value"))n.setValue(t,y);else for(var q=y.attributes,z=0;z<q.length;z++)f.setAttributeForCell(t,q[z].nodeName,0<q[z].nodeValue.length?q[z].nodeValue:null)}}catch(u){null!=window.console&&console.log("Error in value for "+t.id+": "+u)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(t,C)}catch(u){null!=window.console&&console.log("Error in style for "+t.id+": "+u)}try{var A=a.getAttribute("icon");if(null!=A){var D=
-0<A.length?JSON.parse(A):null;null!=D&&D.append||f.removeCellOverlays(t);null!=D&&f.addCellOverlay(t,b(D))}}catch(u){null!=window.console&&console.log("Error in icon for "+t.id+": "+u)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),F=f.getCellGeometry(t);if(null!=F){F=F.clone();for(key in G){var I=parseFloat(G[key]);"dx"==key?F.x+=I:"dy"==key?F.y+=I:"dw"==key?F.width+=I:"dh"==key?F.height+=I:F[key]=parseFloat(G[key])}f.model.setGeometry(t,F)}}}catch(u){null!=window.console&&
-console.log("Error in icon for "+t.id+": "+u)}}}else if("model"==a.nodeName){for(var J=a.firstChild;null!=J&&J.nodeType!=mxConstants.NODETYPE_ELEMENT;)J=J.nextSibling;null!=J&&(new mxCodec(a.firstChild)).decode(J,n)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(l=a.hasAttribute("max-scale")?
-parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{n.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return c};EditorUi.prototype.getCopyFilename=function(a,e){var b=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",d=b.lastIndexOf(".");0<=d&&(c=b.substring(d),b=b.substring(0,d));if(e)var f=new Date,d=f.getFullYear(),l=f.getMonth()+1,t=f.getDate(),k=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),b=b+(" "+(d+"-"+l+"-"+t+"-"+k+"-"+y+"-"+f));
+new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,e){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,n=f.getModel();n.beginUpdate();var l=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var u=n.getCell(a.getAttribute("id"));if(null!=u){try{var k=a.getAttribute("value");if(null!=k){var y=
+mxUtils.parseXml(k).documentElement;if(null!=y)if("1"==y.getAttribute("replace-value"))n.setValue(u,y);else for(var q=y.attributes,z=0;z<q.length;z++)f.setAttributeForCell(u,q[z].nodeName,0<q[z].nodeValue.length?q[z].nodeValue:null)}}catch(t){null!=window.console&&console.log("Error in value for "+u.id+": "+t)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(u,C)}catch(t){null!=window.console&&console.log("Error in style for "+u.id+": "+t)}try{var A=a.getAttribute("icon");if(null!=A){var D=
+0<A.length?JSON.parse(A):null;null!=D&&D.append||f.removeCellOverlays(u);null!=D&&f.addCellOverlay(u,b(D))}}catch(t){null!=window.console&&console.log("Error in icon for "+u.id+": "+t)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),F=f.getCellGeometry(u);if(null!=F){F=F.clone();for(key in G){var I=parseFloat(G[key]);"dx"==key?F.x+=I:"dy"==key?F.y+=I:"dw"==key?F.width+=I:"dh"==key?F.height+=I:F[key]=parseFloat(G[key])}f.model.setGeometry(u,F)}}}catch(t){null!=window.console&&
+console.log("Error in icon for "+u.id+": "+t)}}}else if("model"==a.nodeName){for(var J=a.firstChild;null!=J&&J.nodeType!=mxConstants.NODETYPE_ELEMENT;)J=J.nextSibling;null!=J&&(new mxCodec(a.firstChild)).decode(J,n)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(l=a.hasAttribute("max-scale")?
+parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{n.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return c};EditorUi.prototype.getCopyFilename=function(a,e){var b=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",d=b.lastIndexOf(".");0<=d&&(c=b.substring(d),b=b.substring(0,d));if(e)var f=new Date,d=f.getFullYear(),l=f.getMonth()+1,u=f.getDate(),k=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),b=b+(" "+(d+"-"+l+"-"+u+"-"+k+"-"+y+"-"+f));
return b=mxResources.get("copyOf",[b])+c};EditorUi.prototype.fileLoaded=function(a,e){var b=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var c=!1;this.hideDialog();null!=b&&(EditorUi.debug("File.closed",[b]),b.removeListener(this.descriptorChangedListener),b.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=b&&this.updateDocumentTitle();this.editor.graph.model.clear();
this.editor.undoManager.clear();this.setBackgroundImage(null);!e&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();e||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",
this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+
mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));c=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:a.getMode().toUpperCase()+"-OPEN-FILE-"+
a.getHash(),action:"size_"+a.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")});EditorUi.debug("File.opened",[a]);if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(v){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(v){}}catch(v){this.fileLoadedError=v;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+
-(null!=a?a.getHash():"none"),action:"message_"+v.message,label:"stack_"+v.stack})}catch(t){}var f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):d()});e?f():this.handleError(v,mxResources.get("errorLoadingFile"),f,!0,null,null,!0)}else d();return c};EditorUi.prototype.getHashValueForPages=function(a,e){var b=0,c=new mxGraphModel,d=new mxCodec;null!=e&&(e.byteCount=
-0,e.attrCount=0,e.eltCount=0,e.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var l=a[f].node.cloneNode(!1);l.removeAttribute("name");c.root=a[f].root;var t=d.encode(c);this.editor.graph.saveViewState(a[f].viewState,t,!0);t.removeAttribute("pageWidth");t.removeAttribute("pageHeight");l.appendChild(t);null!=e&&(e.eltCount+=l.getElementsByTagName("*").length,e.nodeCount+=l.getElementsByTagName("mxCell").length);b=(b<<5)-b+this.hashValue(l,function(a,b,e,c){return!c||"mxGeometry"!=
+(null!=a?a.getHash():"none"),action:"message_"+v.message,label:"stack_"+v.stack})}catch(u){}var f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):d()});e?f():this.handleError(v,mxResources.get("errorLoadingFile"),f,!0,null,null,!0)}else d();return c};EditorUi.prototype.getHashValueForPages=function(a,e){var b=0,c=new mxGraphModel,d=new mxCodec;null!=e&&(e.byteCount=
+0,e.attrCount=0,e.eltCount=0,e.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var l=a[f].node.cloneNode(!1);l.removeAttribute("name");c.root=a[f].root;var u=d.encode(c);this.editor.graph.saveViewState(a[f].viewState,u,!0);u.removeAttribute("pageWidth");u.removeAttribute("pageHeight");l.appendChild(u);null!=e&&(e.eltCount+=l.getElementsByTagName("*").length,e.nodeCount+=l.getElementsByTagName("mxCell").length);b=(b<<5)-b+this.hashValue(l,function(a,b,e,c){return!c||"mxGeometry"!=
a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?c&&"mxCell"==a.nodeName&&"previous"==b?null:e:Math.round(e)},e)<<0}return b};EditorUi.prototype.hashValue=function(a,e,c){var b=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(b^=this.hashValue(a.nodeName,e,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var d=0;d<a.attributes.length;d++){var f=a.attributes[d].name,
g=null!=e?e(a,f,a.attributes[d].value,!0):a.attributes[d].value;null!=g&&(b^=this.hashValue(f,e,c)+this.hashValue(g,e,c))}}if(null!=a.childNodes)for(d=0;d<a.childNodes.length;d++)b=(b<<5)-b+this.hashValue(a.childNodes[d],e,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);e=0;null!=c&&(c.byteCount+=a.length);for(d=0;d<a.length;d++)e=(e<<5)-e+a.charCodeAt(d)<<0;b^=e}return b};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=
function(a,e,c,d,f,n,l){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(),
@@ -3325,11 +3329,11 @@ c,a,a.getMode(),!0,!0,function(){null!=A&&null!=A.parentNode&&(A.parentNode.remo
(a.title=f);c.push(a);G(d);null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null)}),I=mxUtils.bind(this,function(a){if(C.isSelectionEmpty())C.getRubberband().isActive()?(C.getRubberband().execute(a),C.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=C.getSelectionCells(),c=C.view.getBounds(b),e=C.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=C.view.translate.x;c.y-=C.view.translate.y;
F(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(p,function(){},mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler.first&&(C.graphHandler.suspend(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility="hidden"),p.style.backgroundColor="#f1f3f4",p.style.cursor="copy",C.panningManager.stop(),C.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler&&(p.style.backgroundColor=
"",p.style.cursor="default",this.sidebar.showTooltips=!0,C.panningManager.stop(),C.graphHandler.reset(),C.isMouseDown=!1,C.autoScroll=!0,I(a),mxEvent.consume(a))}));mxEvent.addListener(p,"mouseleave",mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.graphHandler.first&&(C.graphHandler.resume(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility="visible"),p.style.backgroundColor="",p.style.cursor="",C.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(p,"dragover",mxUtils.bind(this,
-function(a){p.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";p.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"drop",mxUtils.bind(this,function(a){p.style.cursor="";p.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(b,d,f,m,n,l,t,k,x){if(null!=b&&"image/"==d.substring(0,6))b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+
-this.convertDataUri(b),b=[new mxCell("",new mxGeometry(0,0,n,l),b)],b[0].vertex=!0,F(b,new mxRectangle(0,0,n,l),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null);else{var u=!1,v=mxUtils.bind(this,function(b,d){if(null!=b&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(b);null!=f&&0<f.length&&(b=f)}if(null!=b)if(f=mxUtils.parseXml(b),"mxlibrary"==f.documentElement.nodeName)try{var m=
-JSON.parse(mxUtils.getTextContent(f.documentElement));g(m,p);c=c.concat(m);G(a);this.spinner.stop();u=!0}catch(M){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"),m=0;m<n.length;m++){var l=this.stringToCells(Editor.getDiagramNodeXml(n[m])),t=this.editor.graph.getBoundingBoxFromGeometry(l);F(l,new mxRectangle(0,0,t.width,t.height),a)}u=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));
-null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null)});null!=x&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(x,function(a){v(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,t)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?v(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?
-"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(b,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"dragleave",function(a){p.style.cursor="";p.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));k.insertBefore(q,k.firstChild);mxEvent.addListener(q,"click",D);mxEvent.addListener(p,"dblclick",function(a){mxEvent.getSource(a)==
+function(a){p.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";p.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"drop",mxUtils.bind(this,function(a){p.style.cursor="";p.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(b,d,f,m,n,l,u,k,v){if(null!=b&&"image/"==d.substring(0,6))b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+
+this.convertDataUri(b),b=[new mxCell("",new mxGeometry(0,0,n,l),b)],b[0].vertex=!0,F(b,new mxRectangle(0,0,n,l),a,mxEvent.isAltDown(a)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null);else{var t=!1,x=mxUtils.bind(this,function(b,d){if(null!=b&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(b);null!=f&&0<f.length&&(b=f)}if(null!=b)if(f=mxUtils.parseXml(b),"mxlibrary"==f.documentElement.nodeName)try{var m=
+JSON.parse(mxUtils.getTextContent(f.documentElement));g(m,p);c=c.concat(m);G(a);this.spinner.stop();t=!0}catch(M){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"),m=0;m<n.length;m++){var l=this.stringToCells(Editor.getDiagramNodeXml(n[m])),u=this.editor.graph.getBoundingBoxFromGeometry(l);F(l,new mxRectangle(0,0,u.width,u.height),a)}t=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}t||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));
+null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null)});null!=v&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(v,function(a){x(a,"text/xml")},null,u):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,u)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?
+"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(b,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"dragleave",function(a){p.style.cursor="";p.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));k.insertBefore(q,k.firstChild);mxEvent.addListener(q,"click",D);mxEvent.addListener(p,"dblclick",function(a){mxEvent.getSource(a)==
p&&D(a)});f=q.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));k.insertBefore(f,k.firstChild);mxEvent.addListener(f,"click",I);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);
mxEvent.consume(a)})),k.insertBefore(f,k.firstChild))}l.appendChild(k);l.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,c){for(var b=0;b<a.length;b++){var e=a[b],d=e.data;if(null!=d){var d=this.convertDataUri(d),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(f+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(f+"image="+d,e.w,e.h,"",e.title||"",!1,!1,!0))}else null!=e.xml&&(d=this.stringToCells(Graph.decompress(e.xml)),
0<d.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(d,e.w,e.h,e.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?
@@ -3345,8 +3349,8 @@ if(null!=k&&("#G"==k.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid
k);this.handleError(a,c,d,f,m)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){d.innerHTML="";for(var a=0;a<b.length;a++){var c=document.createElement("option");mxUtils.write(c,b[a].displayName);c.value=a;d.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+b[a].email+">");c.setAttribute("disabled","disabled");d.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=b.length;
d.appendChild(c)}var b=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var d=document.createElement("select");d.style.width="200px";a();mxEvent.addListener(d,"change",mxUtils.bind(this,function(){var c=d.value,e=b.length!=c;e&&this.drive.setUser(b[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(b=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),
!0)}));c.appendChild(d);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=e.message?l=mxUtils.htmlEntities(e.message):null!=e.response&&null!=e.response.error?l=mxUtils.htmlEntities(e.response.error):"undefined"!==typeof window.App&&(e.code==App.ERROR_TIMEOUT?l=mxUtils.htmlEntities(mxResources.get("timeout")):
-e.code==App.ERROR_BUSY&&(l=mxUtils.htmlEntities(mxResources.get("busy"))))}var v=n=null;null!=e&&null!=e.helpLink&&(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(e.helpLink)}));this.showError(c,l,g,d,p,null,null,n,v,null,null,null,f?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(a,c){var b=new ErrorDialog(this,null,a,mxResources.get("ok"),c);this.showDialog(b.container,340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(a,c,d,f,m,
-n){var b=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){b();null!=c&&c()},function(){b();null!=d&&d()},f,m,null,null,null,null,e);this.showDialog(a.container,340,46+e,!0,n);a.init()};EditorUi.prototype.showBanner=function(a,c,d){var b=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var e=document.createElement("div");
+e.code==App.ERROR_BUSY&&(l=mxUtils.htmlEntities(mxResources.get("busy"))))}var v=n=null;null!=e&&null!=e.helpLink&&(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(e.helpLink)}));this.showError(c,l,g,d,p,null,null,n,v,null,null,null,f?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(a,c,d){a=new ErrorDialog(this,null,a,mxResources.get("ok"),c);this.showDialog(a.container,d||340,100,!0,!1);a.init()};EditorUi.prototype.confirm=function(a,c,d,f,
+m,n){var b=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){b();null!=c&&c()},function(){b();null!=d&&d()},f,m,null,null,null,null,e);this.showDialog(a.container,340,46+e,!0,n);a.init()};EditorUi.prototype.showBanner=function(a,c,d){var b=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var e=document.createElement("div");
e.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(e.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(e.style,"transition","all 1s ease");e.className="geBtn gePrimaryBtn";b=document.createElement("img");b.setAttribute("src",IMAGE_PATH+
"/logo.png");b.setAttribute("border","0");b.setAttribute("align","absmiddle");b.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";e.appendChild(b);b=document.createElement("img");b.setAttribute("src",Dialog.prototype.closeImage);b.setAttribute("title",mxResources.get("close"));b.setAttribute("border","0");b.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";e.appendChild(b);mxUtils.write(e,c);document.body.appendChild(e);
this.bannerShowing=!0;var f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var g=document.createElement("input");g.setAttribute("type","checkbox");g.setAttribute("id","geDoNotShowAgainCheckbox");g.style.marginRight="6px";f.appendChild(g);c=document.createElement("label");c.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(c,mxResources.get("doNotShowAgain"));f.appendChild(c);e.style.paddingBottom="30px";e.appendChild(f);var l=mxUtils.bind(this,
@@ -3354,13 +3358,13 @@ function(){null!=e.parentNode&&(e.parentNode.removeChild(e),this.bannerShowing=!
mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);b!=g&&b!=c?(d(),l(),mxEvent.consume(a)):k()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(k,3E4);b=!0}return b};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};
EditorUi.prototype.createImageDataUri=function(a,c,d,f){var b=a.toDataURL("image/"+d);if(6>=b.length||b==a.cloneNode(!1).toDataURL("image/"+d))throw{message:"Invalid image"};null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c)));0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));return b};EditorUi.prototype.saveCanvas=function(a,c,d,f,m){var b="jpeg"==d?"jpg":d;f=this.getBaseFilename(f)+"."+b;a=this.createImageDataUri(a,c,d,m);this.saveData(f,b,a.substring(a.lastIndexOf(",")+
1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,c){var b=new TextareaDialog(this,a,c,null,null,mxResources.get("close"));b.textarea.style.width="600px";b.textarea.style.height="380px";this.showDialog(b.container,
-620,460,!0,!0,null,null,null,null,!0);b.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,c,d,f,m){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||(c+=".drawio");if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",
-!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",a):this.openInNewWindow(a,d,f);else{var b=document.createElement("a"),e=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof b.download;if(mxClient.IS_GC&&null!=navigator.userAgent)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),e=65==(g?parseInt(g[2],10):!1)?!1:e;if(e||this.isOffline()){b.href=URL.createObjectURL(f?
-this.base64ToBlob(a,d):new Blob([a],{type:d}));e?b.download=c:b.setAttribute("target","_blank");document.body.appendChild(b);try{window.setTimeout(function(){URL.revokeObjectURL(b.href)},2E4),b.click(),b.parentNode.removeChild(b)}catch(x){}}else this.createEchoRequest(a,c,d,f,m).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,c,d,f,m,n){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=m?"&format="+m:"")+(null!=n?"&base64="+
-n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,c){c=c||"";for(var b=atob(a),e=b.length,d=Math.ceil(e/1024),f=Array(d),l=0;l<d;++l){for(var t=1024*l,k=Math.min(t+1024,e),y=Array(k-t),q=0;t<k;++q,++t)y[q]=b[t].charCodeAt(0);f[l]=new Uint8Array(y)}return new Blob(f,{type:c})};EditorUi.prototype.saveLocalFile=function(a,c,d,f,m,n,l){n=null!=n?n:!1;l=null!=l?l:"vsdx"!=m&&(!mxClient.IS_IOS||!navigator.standalone);m=this.getServiceCount(n);
-isLocalStorage&&m++;var b=4>=m?2:6<m?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(b,c){try{if("_blank"==c)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(a,d,f);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(a,b,d,f):null!=b&&0<b.length&&this.pickFolder(c,mxUtils.bind(this,function(e){try{this.exportFile(a,b,d,f,c,
-e)}catch(C){this.handleError(C)}}))}catch(z){this.handleError(z)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,l,null,1<m,b,a,d,f);n=this.isServices(m)?m>b?390:270:160;this.showDialog(c.container,400,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(a,c,d){var b=window.open("about:blank");null==b||null==b.document?mxUtils.popup(a,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?b.document.write("<html>"+a+"</html>"):
-(a=d?a:btoa(unescape(encodeURIComponent(a))),b.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+a+'"/></html>')):b.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),b.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,
+620,460,!0,!0,null,null,null,null,!0);b.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,c,d,f,m,n){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",
+!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",a):this.openInNewWindow(a,d,f);else{var b=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof b.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var e=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(e?parseInt(e[2],10):!1)?!1:n}if(n||this.isOffline()){b.href=URL.createObjectURL(f?
+this.base64ToBlob(a,d):new Blob([a],{type:d}));n?b.download=c:b.setAttribute("target","_blank");document.body.appendChild(b);try{window.setTimeout(function(){URL.revokeObjectURL(b.href)},2E4),b.click(),b.parentNode.removeChild(b)}catch(x){}}else this.createEchoRequest(a,c,d,f,m).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,c,d,f,m,n){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=m?"&format="+m:"")+(null!=n?"&base64="+
+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,c){c=c||"";for(var b=atob(a),e=b.length,d=Math.ceil(e/1024),f=Array(d),l=0;l<d;++l){for(var u=1024*l,k=Math.min(u+1024,e),y=Array(k-u),q=0;u<k;++q,++u)y[q]=b[u].charCodeAt(0);f[l]=new Uint8Array(y)}return new Blob(f,{type:c})};EditorUi.prototype.saveLocalFile=function(a,c,d,f,m,n,l,k){n=null!=n?n:!1;l=null!=l?l:"vsdx"!=m&&(!mxClient.IS_IOS||!navigator.standalone);m=this.getServiceCount(n);
+isLocalStorage&&m++;var b=4>=m?2:6<m?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(b,c){try{if("_blank"==c)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(a,d,f);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(a,b,d,f,null,k):null!=b&&0<b.length&&this.pickFolder(c,mxUtils.bind(this,function(e){try{this.exportFile(a,
+b,d,f,c,e)}catch(A){this.handleError(A)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,l,null,1<m,b,a,d,f);n=this.isServices(m)?m>b?390:270:160;this.showDialog(c.container,400,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(a,c,d){var b=window.open("about:blank");null==b||null==b.document?mxUtils.popup(a,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?b.document.write("<html>"+
+a+"</html>"):(a=d?a:btoa(unescape(encodeURIComponent(a))),b.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+a+'"/></html>')):b.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),b.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,
"click",c);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)c.apply(this);else{this.exportDialog=document.createElement("div");var e=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";
this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var d=new Spinner({lines:8,length:6,width:5,
radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});d.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(a){d.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",
@@ -3369,8 +3373,8 @@ Editor.cameraLargeImage,mxResources.get("export"))}f.apply(this,arguments)};Edit
function(a,b){if("_blank"==b||null!=a&&0<a.length){var e=d("_blank"==b?null:a,b==App.MODE_DEVICE||"download"==b||null==b||"_blank"==b?"0":"1");null!=e&&(b==App.MODE_DEVICE||"download"==b||"_blank"==b?e.simulate(document,"_blank"):this.pickFolder(b,mxUtils.bind(this,function(d){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,a,n,!0,b,d)}catch(A){this.handleError(A)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();
if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,n,!0,b,d)}catch(A){this.handleError(A)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<b,e,f,n,m);b=this.isServices(b)?4<b?390:270:160;this.showDialog(a.container,380,b,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=
a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,c,d,f,m,n){};EditorUi.prototype.pickFolder=function(a,c,d){c(null)};EditorUi.prototype.exportSvg=function(a,c,d,f,m,n,l,k,x,y,q){if(this.spinner.spin(document.body,mxResources.get("export")))try{var b=this.editor.graph.isSelectionEmpty();d=null!=d?d:b;var e=c?null:this.editor.graph.background;e==mxConstants.NONE&&(e=null);null==e&&0==c&&(e=q?this.editor.graph.defaultPageBackgroundColor:
-"#ffffff");var g=this.editor.graph.getSvg(e,a,l,k,null,d,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,q);f&&this.editor.graph.addSvgShadow(g);var p=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();m&&a.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||
-b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(g);this.editor.graph.mathEnabled&&this.editor.addMathCss(g);n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(g,t,this.thumbImageCache)):t(g)}catch(F){this.handleError(F)}};EditorUi.prototype.addRadiobox=function(a,c,d,f,m,n,l){return this.addCheckbox(a,
+"#ffffff");var g=this.editor.graph.getSvg(e,a,l,k,null,d,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,q);f&&this.editor.graph.addSvgShadow(g);var p=this.getBaseFilename()+".svg",u=mxUtils.bind(this,function(a){this.spinner.stop();m&&a.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||
+b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(g);this.editor.graph.mathEnabled&&this.editor.addMathCss(g);n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(g,u,this.thumbImageCache)):u(g)}catch(F){this.handleError(F)}};EditorUi.prototype.addRadiobox=function(a,c,d,f,m,n,l){return this.addCheckbox(a,
d,f,m,n,l,!0,c)};EditorUi.prototype.addCheckbox=function(a,c,d,f,m,n,l,k){n=null!=n?n:!0;var b=document.createElement("input");b.style.marginRight="8px";b.style.marginTop="16px";b.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();b.id=l;null!=k&&b.setAttribute("name",k);d&&(b.setAttribute("checked","checked"),b.defaultChecked=!0);f&&b.setAttribute("disabled","disabled");n&&(a.appendChild(b),d=document.createElement("label"),mxUtils.write(d,c),d.setAttribute("for",l),a.appendChild(d),
m||mxUtils.br(a));return b};EditorUi.prototype.addEditButton=function(a,c){var b=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);b.style.marginLeft="24px";var e=this.getCurrentFile(),d="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(d=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,
mxResources.get("makeCopy"));f.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");f.appendChild(e);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var a=new FilenameDialog(this,d,mxResources.get("ok"),function(a){null!=a?d=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));
@@ -3383,11 +3387,11 @@ x){x=null!=x?x:this.createUrlParameters(a,c,d,f,m,n);a=this.getCurrentFile();c=!
EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<x.length?"?"+x.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,c,d,f,m,n,l,k,x,y,q){this.getBasenames();var b={};""!=m&&m!=mxConstants.NONE&&(b.highlight=m);"auto"!==f&&(b.target=f);x||(b.lightbox=!1);b.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(b.zoom=d/100);d=[];l&&(d.push("pages"),b.resize=!0,null!=this.pages&&null!=this.currentPage&&
(b.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(d.push("zoom"),b.resize=!0);k&&d.push("layers");0<d.length&&(x&&d.push("lightbox"),b.toolbar=d.join(" "));null!=y&&0<y.length&&(b.edit=y);null!=a?b.url=a:b.xml=this.getFileData(!0,null,null,null,null,!l);c='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";q(c,'<script type="text/javascript" src="'+
(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,c,d,f){var b=document.createElement("div");b.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
-b.appendChild(e);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");e=l.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));
-g.appendChild(p);mxUtils.br(g);g.appendChild(l);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));g.appendChild(p);var k=this.getCurrentFile();null==d&&null!=k&&k.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),g.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));
-e.setAttribute("checked","checked");null==d&&l.setAttribute("disabled","disabled");b.appendChild(g);var q=this.addLinkSection(b),z=this.addCheckbox(b,mxResources.get("zoom"),!0,null,!0);mxUtils.write(b,":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value="100%";b.appendChild(C);var A=this.addCheckbox(b,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,D=
+b.appendChild(e);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var p=document.createElement("input");p.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";p.setAttribute("value","url");p.setAttribute("type","radio");p.setAttribute("name","type-embedhtmldialog");e=p.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var l=document.createElement("span");mxUtils.write(l,mxResources.get("includeCopyOfMyDiagram"));
+g.appendChild(l);mxUtils.br(g);g.appendChild(p);l=document.createElement("span");mxUtils.write(l,mxResources.get("publicDiagramUrl"));g.appendChild(l);var k=this.getCurrentFile();null==d&&null!=k&&k.constructor==window.DriveFile&&(l=document.createElement("a"),l.style.paddingLeft="12px",l.style.color="gray",l.style.cursor="pointer",mxUtils.write(l,mxResources.get("share")),g.appendChild(l),mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));
+e.setAttribute("checked","checked");null==d&&p.setAttribute("disabled","disabled");b.appendChild(g);var q=this.addLinkSection(b),z=this.addCheckbox(b,mxResources.get("zoom"),!0,null,!0);mxUtils.write(b,":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value="100%";b.appendChild(C);var A=this.addCheckbox(b,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,D=
D=this.addCheckbox(b,mxResources.get("allPages"),g,!g),G=this.addCheckbox(b,mxResources.get("layers"),!0),F=this.addCheckbox(b,mxResources.get("lightbox"),!0),I=this.addEditButton(b,F),J=I.getEditInput();J.style.marginBottom="16px";mxEvent.addListener(F,"change",function(){F.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled");J.checked&&F.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,b,
-mxUtils.bind(this,function(){f(l.checked?d:null,z.checked,C.value,q.getTarget(),q.getColor(),A.checked,D.checked,G.checked,F.checked,I.getLink())}),null,a,c);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,c,d,f,m,n,l){l=document.createElement("div");l.style.whiteSpace="nowrap";var b=document.createElement("h3");mxUtils.write(b,a||mxResources.get("link"));b.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";l.appendChild(b);
+mxUtils.bind(this,function(){f(p.checked?d:null,z.checked,C.value,q.getTarget(),q.getColor(),A.checked,D.checked,G.checked,F.checked,I.getLink())}),null,a,c);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,c,d,f,m,n,l){l=document.createElement("div");l.style.whiteSpace="nowrap";var b=document.createElement("h3");mxUtils.write(b,a||mxResources.get("link"));b.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";l.appendChild(b);
var e=this.getCurrentFile(),b="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=e&&e.constructor==window.DriveFile&&!c){a=80;var b="https://desk.draw.io/support/solutions/articles/16000039384",g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));g.appendChild(p);
p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(e.getId())}));p.style.marginTop="12px";p.className="geBtn";g.appendChild(p);l.appendChild(g);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));g.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),
mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var k=null,q=null;if(null!=d||null!=f)a+=30,mxUtils.write(l,mxResources.get("width")+":"),k=document.createElement("input"),k.setAttribute("type","text"),k.style.marginRight="16px",k.style.width="50px",k.style.marginLeft="6px",k.style.marginRight="16px",k.style.marginBottom="10px",
@@ -3397,13 +3401,13 @@ c=new CustomDialog(this,l,mxUtils.bind(this,function(){m(v.getTarget(),v.getColo
b.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(m?"10":"4")+"px";b.appendChild(e);if(m){mxUtils.write(b,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.marginRight="16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";b.appendChild(g);mxUtils.write(b,
mxResources.get("borderWidth")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.value=this.lastExportBorder||"0";b.appendChild(l);mxUtils.br(b)}var p=this.addCheckbox(b,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),k=f?null:this.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),!0),e=this.editor.graph,q=f?null:this.addCheckbox(b,mxResources.get("transparentBackground"),
e.background==mxConstants.NONE||null==e.background);null!=q&&(q.style.marginBottom="16px");a=new CustomDialog(this,b,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(l.value)||0;d(!p.checked,null!=k?k.checked:!1,null!=q?q.checked:!1,a,b)}),null,a,c);this.showDialog(a.container,300,(m?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(a,c,d,f,m,n,l,k){l=null!=l?l:!0;var b=document.createElement("div");b.style.whiteSpace="nowrap";var e=this.editor.graph,g="jpeg"==
-k?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";b.appendChild(p);mxUtils.write(b,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";b.appendChild(t);mxUtils.write(b,mxResources.get("borderWidth")+":");var q=document.createElement("input");
+k?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";b.appendChild(p);mxUtils.write(b,mxResources.get("zoom")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value=this.lastExportZoom||"100%";b.appendChild(u);mxUtils.write(b,mxResources.get("borderWidth")+":");var q=document.createElement("input");
q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.value=this.lastExportBorder||"0";b.appendChild(q);mxUtils.br(b);var v=this.addCheckbox(b,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=k),G=null;"dark"==uiTheme&&(G=this.addCheckbox(b,mxResources.get("dark"),!0),g+=26);var F=this.addCheckbox(b,mxResources.get("selectionOnly"),!1,e.isSelectionEmpty()),I=document.createElement("input");I.style.marginTop="16px";I.style.marginRight=
-"8px";I.style.marginLeft="24px";I.setAttribute("disabled","disabled");I.setAttribute("type","checkbox");n&&(b.appendChild(I),mxUtils.write(b,mxResources.get("crop")),mxUtils.br(b),g+=26,mxEvent.addListener(F,"change",function(){F.checked?I.removeAttribute("disabled"):I.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(I.setAttribute("checked","checked"),I.defaultChecked=!0);var J=this.addCheckbox(b,mxResources.get("shadow"),e.shadowVisible),u=document.createElement("input");u.style.marginTop=
-"16px";u.style.marginRight="8px";u.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||u.setAttribute("disabled","disabled");c&&(b.appendChild(u),mxUtils.write(b,mxResources.get("embedImages")),mxUtils.br(b),g+=26);var K=null;if("png"==k||"jpeg"==k)K=this.addCheckbox(b,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),g+=26;var B=this.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=k),L=null!=this.pages&&1<this.pages.length,
+"8px";I.style.marginLeft="24px";I.setAttribute("disabled","disabled");I.setAttribute("type","checkbox");n&&(b.appendChild(I),mxUtils.write(b,mxResources.get("crop")),mxUtils.br(b),g+=26,mxEvent.addListener(F,"change",function(){F.checked?I.removeAttribute("disabled"):I.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(I.setAttribute("checked","checked"),I.defaultChecked=!0);var J=this.addCheckbox(b,mxResources.get("shadow"),e.shadowVisible),t=document.createElement("input");t.style.marginTop=
+"16px";t.style.marginRight="8px";t.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||t.setAttribute("disabled","disabled");c&&(b.appendChild(t),mxUtils.write(b,mxResources.get("embedImages")),mxUtils.br(b),g+=26);var K=null;if("png"==k||"jpeg"==k)K=this.addCheckbox(b,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),g+=26;var B=this.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=k),L=null!=this.pages&&1<this.pages.length,
O=this.addCheckbox(b,L?mxResources.get("allPages"):"",L,!L,null,"jpeg"!=k);O.style.marginLeft="24px";O.style.marginBottom="16px";L?g+=26:O.style.display="none";mxEvent.addListener(B,"change",function(){B.checked&&L?O.removeAttribute("disabled"):O.setAttribute("disabled","disabled")});l&&L||O.setAttribute("disabled","disabled");var H=document.createElement("select");H.style.maxWidth="260px";H.style.marginLeft="8px";H.style.marginRight="10px";H.className="geBtn";a=document.createElement("option");a.setAttribute("value",
"auto");mxUtils.write(a,mxResources.get("automatic"));H.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));H.appendChild(a);a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));H.appendChild(a);"svg"==k&&(mxUtils.write(b,mxResources.get("links")+":"),b.appendChild(H),mxUtils.br(b),mxUtils.br(b),g+=26);d=new CustomDialog(this,b,mxUtils.bind(this,function(){this.lastExportBorder=
-q.value;this.lastExportZoom=t.value;m(t.value,v.checked,!F.checked,J.checked,B.checked,u.checked,q.value,I.checked,!O.checked,H.value,null!=K?K.checked:null,null!=G?G.checked:null)}),null,d,f);this.showDialog(d.container,340,g,!0,!0,null,null,null,null,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,c,d,f,m){var b=document.createElement("div");b.style.whiteSpace=
+q.value;this.lastExportZoom=u.value;m(u.value,v.checked,!F.checked,J.checked,B.checked,t.checked,q.value,I.checked,!O.checked,H.value,null!=K?K.checked:null,null!=G?G.checked:null)}),null,d,f);this.showDialog(d.container,340,g,!0,!0,null,null,null,null,!0);u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,c,d,f,m){var b=document.createElement("div");b.style.whiteSpace=
"nowrap";var e=this.editor.graph;if(null!=c){var g=document.createElement("h3");mxUtils.write(g,c);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(g)}var l=this.addCheckbox(b,mxResources.get("fit"),!0),p=this.addCheckbox(b,mxResources.get("shadow"),e.shadowVisible&&f,!f),k=this.addCheckbox(b,d),q=this.addCheckbox(b,mxResources.get("lightbox"),!0),C=this.addEditButton(b,q),A=C.getEditInput(),D=1<e.model.getChildCount(e.model.getRoot()),G=this.addCheckbox(b,
mxResources.get("layers"),D,!D);G.style.marginLeft=A.style.marginLeft;G.style.marginBottom="12px";G.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(D&&G.removeAttribute("disabled"),A.removeAttribute("disabled")):(G.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"));A.checked&&q.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,b,mxUtils.bind(this,function(){a(l.checked,
p.checked,k.checked,q.checked,C.getLink(),G.checked)}),null,mxResources.get("embed"),m);this.showDialog(c.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,c,d,f,m,n,l,k){function b(b){var c=" ",g="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
@@ -3416,10 +3420,10 @@ a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years")
a.nodeName){var e=a.getElementsByTagName("diagram");if(0<e.length){var b=e[0],d=c.getGlobalVariable;c.getGlobalVariable=function(a){return"page"==a?b.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:d.apply(this,arguments)}}}null!=b&&(a=Editor.parseDiagramNode(b))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(a)}catch(n){}finally{this.editor.graph=e}return a};EditorUi.prototype.getPngFileProperties=function(a){var b=1,c=0;if(null!=a){if(a.hasAttribute("scale")){var d=
parseFloat(a.getAttribute("scale"));!isNaN(d)&&0<d&&(b=d)}a.hasAttribute("border")&&(d=parseInt(a.getAttribute("border")),!isNaN(d)&&0<d&&(c=d))}return{scale:b,border:c}};EditorUi.prototype.getEmbeddedPng=function(a,c,d,f,m){try{var b=this.editor.graph,e=null!=b.themes&&"darkTheme"==b.defaultThemeName,g=null;if(null!=d&&0<d.length)b=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(b.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,
!0),b),g=d;else if(e||null!=this.pages&&this.currentPage!=this.pages[0]){var b=this.createTemporaryGraph(b.getStylesheet()),l=b.getGlobalVariable,p=this.pages[0];b.getGlobalVariable=function(a){return"page"==a?p.getName():"pagenumber"==a?1:l.apply(this,arguments)};document.body.appendChild(b.container);b.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==g&&(g=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var d=e.toDataURL("image/png"),d=Editor.writeGraphModelToPng(d,
-"tEXt","mxfile",encodeURIComponent(g));a(d.substring(d.lastIndexOf(",")+1));b!=this.editor.graph&&b.container.parentNode.removeChild(b.container)}catch(C){null!=c&&c(C)}}),null,null,null,mxUtils.bind(this,function(a){null!=c&&c(a)}),null,null,f,null,b.shadowVisible,null,b,m)}catch(E){null!=c&&c(E)}};EditorUi.prototype.getEmbeddedSvg=function(a,c,d,f,m,l,k,t){t=null!=t?t:!0;k=c.background;k==mxConstants.NONE&&(k=null);l=c.getSvg(k,null,null,null,null,l);c.shadowVisible&&c.addSvgShadow(l);null!=a&&
-l.setAttribute("content",a);null!=d&&l.setAttribute("resource",d);if(null!=m)this.embedFonts(l,mxUtils.bind(this,function(a){t?this.editor.convertImages(a,mxUtils.bind(this,function(a){m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))})):m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
+"tEXt","mxfile",encodeURIComponent(g));a(d.substring(d.lastIndexOf(",")+1));b!=this.editor.graph&&b.container.parentNode.removeChild(b.container)}catch(C){null!=c&&c(C)}}),null,null,null,mxUtils.bind(this,function(a){null!=c&&c(a)}),null,null,f,null,b.shadowVisible,null,b,m)}catch(E){null!=c&&c(E)}};EditorUi.prototype.getEmbeddedSvg=function(a,c,d,f,m,l,k,u){u=null!=u?u:!0;k=c.background;k==mxConstants.NONE&&(k=null);l=c.getSvg(k,null,null,null,null,l);c.shadowVisible&&c.addSvgShadow(l);null!=a&&
+l.setAttribute("content",a);null!=d&&l.setAttribute("resource",d);if(null!=m)this.embedFonts(l,mxUtils.bind(this,function(a){u?this.editor.convertImages(a,mxUtils.bind(this,function(a){m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))})):m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(l)};EditorUi.prototype.embedFonts=function(a,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(a,this.editor.resolvedFontCss),this.editor.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.editor.addFontCss(a,b),c(a)}catch(p){c(a)}}))}catch(g){c(a)}}))};
-EditorUi.prototype.exportImage=function(a,c,d,f,m,l,k,t,q,y,E,z){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var b=this.editor.graph.isSelectionEmpty();d=null!=d?d:b;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();try{this.saveCanvas(a,m?this.getFileData(!0,null,null,null,d,t):null,q,null==this.pages||0==this.pages.length,E)}catch(D){"Invalid image"==D.message?this.downloadFile(q):
+EditorUi.prototype.exportImage=function(a,c,d,f,m,l,k,u,q,y,E,z){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var b=this.editor.graph.isSelectionEmpty();d=null!=d?d:b;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();try{this.saveCanvas(a,m?this.getFileData(!0,null,null,null,d,u):null,q,null==this.pages||0==this.pages.length,E)}catch(D){"Invalid image"==D.message?this.downloadFile(q):
this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,c,f,null,null,l,k,y,z)}catch(A){this.spinner.stop(),this.handleError(A)}}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.importXml=function(a,c,d,f,m){c=null!=c?c:0;d=null!=d?d:0;var b=[];try{var e=this.editor.graph;if(null!=a&&0<a.length){e.model.beginUpdate();try{var g=mxUtils.parseXml(a);a={};
var l=this.editor.extractGraphModel(g.documentElement,null!=this.pages);if(null!=l&&"mxfile"==l.nodeName&&null!=this.pages){var p=l.getElementsByTagName("diagram");if(1==p.length)l=Editor.parseDiagramNode(p[0]),null!=this.currentPage&&(a[p[0].getAttribute("id")]=this.currentPage.getId());else if(1<p.length){var g=[],k=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(a[p[0].getAttribute("id")]=this.pages[0].getId(),l=Editor.parseDiagramNode(p[0]),f=!1,k=1);for(;k<p.length;k++){var q=
p[k].getAttribute("id");p[k].removeAttribute("id");var C=this.updatePageRoot(new DiagramPage(p[k]));a[q]=p[k].getAttribute("id");var A=this.pages.length;null==C.getName()&&C.setName(mxResources.get("pageWithNumber",[A+1]));e.model.execute(new ChangePage(this,C,C,A,!0));g.push(C)}this.updatePageLinks(a,g)}}if(null!=l&&"mxGraphModel"===l.nodeName&&(b=e.importGraphModel(l,c,d,f),null!=b))for(k=0;k<b.length;k++)this.updatePageLinksForCell(a,b[k])}finally{e.model.endUpdate()}}}catch(D){if(m)throw D;this.handleError(D)}return b};
@@ -3449,16 +3453,16 @@ a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]}
if(!c){var e=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a,0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,
360,220,!0,!0,function(){window.openFile=null});if(!c){var d=this.dialog,f=d.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=e;f.apply(d,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(a,c,d){var b=this,e=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(e){if(0==Object.keys(e.files).length)d();else{var f=0,g,m=!1;e.forEach(function(a,
b){var e=b.name.toLowerCase();"diagram/diagram.xml"==e?(m=!0,b.async("string").then(function(a){0==a.indexOf("<mxfile ")?c(a):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>f&&(f=e,g=b))});0<f?g.async("string").then(function(e){!b.isOffline()&&(new XMLHttpRequest).upload&&b.isRemoteFileFormat(e,a.name)?b.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?c(a.responseText):d())}),a.name):d()}):m||d()}},
-function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,c,d,f,m,l,k,t,q,y,E){y=null!=y?y:!0;var b=!1,e=null,g=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,k)):b=this.importXml(a,d,f,y);null!=t&&t(b)});"image"==c.substring(0,5)?(q=!1,"image/png"==c.substring(0,9)&&(c=E?null:
+function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,c,d,f,m,l,k,u,q,y,E){y=null!=y?y:!0;var b=!1,e=null,g=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,k)):b=this.importXml(a,d,f,y);null!=u&&u(b)});"image"==c.substring(0,5)?(q=!1,"image/png"==c.substring(0,9)&&(c=E?null:
this.extractGraphModelFromPng(a),null!=c&&0<c.length&&(e=this.importXml(c,d,f,y),q=!0)),q||(c=this.editor.graph,E=a.indexOf(";"),0<E&&(a=a.substring(0,E)+a.substring(a.indexOf(",",E+1))),y&&c.isGridEnabled()&&(d=c.snap(d),f=c.snap(f)),e=[c.insertVertex(null,null,"",d,f,m,l,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";")])):/(\.*<graphml )/.test(a)?(b=!0,this.importGraphML(a,g)):null!=q&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||
-/(\.vs(x|sx?))($|\?)/i.test(k))?(b=!0,this.importVisio(q,g)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(b=!0,this.parseFile(null!=q?q:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(a.responseText):null!=t&&t(null))}),k)):0==a.indexOf("PK")&&null!=q?(b=!0,this.importZipFile(q,g,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y);t(e)}))):/(\.v(sd|dx))($|\?)/i.test(k)||
-/(\.vs(s|x))($|\?)/i.test(k)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y));b||null==t||t(e);return e};EditorUi.prototype.importFiles=function(a,c,d,f,m,l,k,t,q,y,E,z){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var b=null!=c&&null!=d,e=!0;c=null!=c?c:0;d=null!=d?d:0;var g=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=E||this.resampleThreshold,p=0;p<a.length;p++)if("image/"==a[p].type.substring(0,6)&&a[p].size>n){g=!0;break}var x=mxUtils.bind(this,function(){var g=
+/(\.vs(x|sx?))($|\?)/i.test(k))?(b=!0,this.importVisio(q,g)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(b=!0,this.parseFile(null!=q?q:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(a.responseText):null!=u&&u(null))}),k)):0==a.indexOf("PK")&&null!=q?(b=!0,this.importZipFile(q,g,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y);u(e)}))):/(\.v(sd|dx))($|\?)/i.test(k)||
+/(\.vs(s|x))($|\?)/i.test(k)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y));b||null==u||u(e);return e};EditorUi.prototype.importFiles=function(a,c,d,f,m,l,k,u,q,y,E,z){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var b=null!=c&&null!=d,e=!0;c=null!=c?c:0;d=null!=d?d:0;var g=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=E||this.resampleThreshold,p=0;p<a.length;p++)if("image/"==a[p].type.substring(0,6)&&a[p].size>n){g=!0;break}var x=mxUtils.bind(this,function(){var g=
this.editor.graph,n=g.gridSize;m=null!=m?m:mxUtils.bind(this,function(a,c,e,d,f,g,m,l,n){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,m)),null):this.importFile(a,c,e,d,f,g,m,l,n,b,z)}catch(U){return this.handleError(U),null}});l=null!=l?l:mxUtils.bind(this,function(a){g.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=a.length,q=p,x=[],v=mxUtils.bind(this,function(a,b){x[a]=b;if(0==
---q){this.spinner.stop();if(null!=t)t(x);else{var c=[];g.getModel().beginUpdate();try{for(var e=0;e<x.length;e++){var d=x[e]();null!=d&&(c=c.concat(d))}}finally{g.getModel().endUpdate()}}l(c)}}),A=0;A<p;A++)mxUtils.bind(this,function(b){var l=a[b];if(null!=l){var p=new FileReader;p.onload=mxUtils.bind(this,function(a){if(null==k||k(l))if("image/"==l.type.substring(0,6))if("image/svg"==l.type.substring(0,9)){var p=a.target.result,t=p.indexOf(","),u=decodeURIComponent(escape(atob(p.substring(t+1)))),
-q=mxUtils.parseXml(u),u=q.getElementsByTagName("svg");if(0<u.length){var u=u[0],x=z?null:u.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?v(b,mxUtils.bind(this,function(){try{if(p.substring(0,t+1),null!=q){var a=q.getElementsByTagName("svg");if(0<a.length){var e=a[0],k=e.getAttribute("width"),u=
-e.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,u=null!=u&&"%"!=u.charAt(u.length-1)?parseFloat(u):NaN,x=e.getAttribute("viewBox");if(null==x||0==x.length)e.setAttribute("viewBox","0 0 "+k+" "+u);else if(isNaN(k)||isNaN(u)){var y=x.split(" ");3<y.length&&(k=parseFloat(y[2]),u=parseFloat(y[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(e));var v=Math.min(1,Math.min(f/Math.max(1,k)),f/Math.max(1,u)),B=m(p,l.type,c+b*n,d+b*n,Math.max(1,Math.round(k*v)),Math.max(1,Math.round(u*
-v)),l.name);if(isNaN(k)||isNaN(u)){var A=new Image;A.onload=mxUtils.bind(this,function(){k=Math.max(1,A.width);u=Math.max(1,A.height);B[0].geometry.width=k;B[0].geometry.height=u;e.setAttribute("viewBox","0 0 "+k+" "+u);p=Editor.createSvgDataUri(mxUtils.getXml(e));var a=p.indexOf(";");0<a&&(p=p.substring(0,a)+p.substring(p.indexOf(",",a+1)));g.setCellStyles("image",p,[B[0]])});A.src=Editor.createSvgDataUri(mxUtils.getXml(e))}return B}}}catch(W){}return null})):v(b,mxUtils.bind(this,function(){return m(x,
-"text/xml",c+b*n,d+b*n,0,0,l.name)}))}else v(b,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==l.type){var B=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=B&&0<B.length){var A=new Image;A.src=a.target.result;v(b,mxUtils.bind(this,function(){return m(B,"text/xml",c+b*n,d+b*n,A.width,A.height,l.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),
+--q){this.spinner.stop();if(null!=u)u(x);else{var c=[];g.getModel().beginUpdate();try{for(var e=0;e<x.length;e++){var d=x[e]();null!=d&&(c=c.concat(d))}}finally{g.getModel().endUpdate()}}l(c)}}),A=0;A<p;A++)mxUtils.bind(this,function(b){var l=a[b];if(null!=l){var p=new FileReader;p.onload=mxUtils.bind(this,function(a){if(null==k||k(l))if("image/"==l.type.substring(0,6))if("image/svg"==l.type.substring(0,9)){var p=a.target.result,u=p.indexOf(","),t=decodeURIComponent(escape(atob(p.substring(u+1)))),
+q=mxUtils.parseXml(t),t=q.getElementsByTagName("svg");if(0<t.length){var t=t[0],x=z?null:t.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?v(b,mxUtils.bind(this,function(){try{if(p.substring(0,u+1),null!=q){var a=q.getElementsByTagName("svg");if(0<a.length){var e=a[0],k=e.getAttribute("width"),t=
+e.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,y=e.getAttribute("viewBox");if(null==y||0==y.length)e.setAttribute("viewBox","0 0 "+k+" "+t);else if(isNaN(k)||isNaN(t)){var x=y.split(" ");3<x.length&&(k=parseFloat(x[2]),t=parseFloat(x[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(e));var v=Math.min(1,Math.min(f/Math.max(1,k)),f/Math.max(1,t)),B=m(p,l.type,c+b*n,d+b*n,Math.max(1,Math.round(k*v)),Math.max(1,Math.round(t*
+v)),l.name);if(isNaN(k)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){k=Math.max(1,A.width);t=Math.max(1,A.height);B[0].geometry.width=k;B[0].geometry.height=t;e.setAttribute("viewBox","0 0 "+k+" "+t);p=Editor.createSvgDataUri(mxUtils.getXml(e));var a=p.indexOf(";");0<a&&(p=p.substring(0,a)+p.substring(p.indexOf(",",a+1)));g.setCellStyles("image",p,[B[0]])});A.src=Editor.createSvgDataUri(mxUtils.getXml(e))}return B}}}catch(W){}return null})):v(b,mxUtils.bind(this,function(){return m(x,
+"text/xml",c+b*n,d+b*n,0,0,l.name)}))}else v(b,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==l.type){var B=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=B&&0<B.length){var A=new Image;A.src=a.target.result;v(b,mxUtils.bind(this,function(){return m(B,"text/xml",c+b*n,d+b*n,A.width,A.height,l.name)}));t=!0}}t||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),
mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(g){this.resizeImage(g,a.target.result,mxUtils.bind(this,function(g,k,p){v(b,mxUtils.bind(this,function(){if(null!=g&&g.length<y){var t=e&&this.isResampleImage(a.target.result,E)?Math.min(1,Math.min(f/k,f/p)):1;return m(g,l.type,c+b*n,d+b*n,Math.round(k*t),Math.round(p*t),l.name)}this.handleError({message:mxResources.get("imageTooBig")});
return null}))}),e,f,E)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else p=a.target.result,m(p,l.type,c+b*n,d+b*n,240,160,l.name,function(a){v(b,function(){return a})},l)});/(\.v(dx|sdx?))($|\?)/i.test(l.name)||/(\.vs(x|sx?))($|\?)/i.test(l.name)?m(null,l.type,c+b*n,d+b*n,240,160,l.name,function(a){v(b,function(){return a})},l):"image"==l.type.substring(0,5)||"application/pdf"==l.type?p.readAsDataURL(l):p.readAsText(l)}})(A)});if(g){g=[];
for(p=0;p<a.length;p++)g.push(a[p]);a=g;this.confirmImageResize(function(a){e=a;x()},q)}else x()};EditorUi.prototype.confirmImageResize=function(a,c){c=null!=c?c:!1;var b=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,d=function(e,d){if(e||c)mxSettings.setResizeImages(e?d:null),mxSettings.save();b();a(d)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),
@@ -3472,8 +3476,8 @@ g),l.height=Math.max(l.height,m),c.cellsResized([b],[l],!1));c.setAttributeForCe
null!=d)this.editMermaidData(b,e,d);else{var g=c.getCellStyle(b);"1"==mxUtils.getValue(g,"metaEdit","0")?a.showDataDialog(b):f.apply(this,arguments)}}catch(F){a.handleError(F)}};c.getLinkTitle=function(b){return a.getLinkTitle(b)};c.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(D){a.handleError(D)}return c};var l=this.clearDefaultStyle;this.clearDefaultStyle=function(){l.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink=
"https://desk.draw.io/support/solutions/articles/16000051979");var m=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return m.apply(this,arguments)};var k=c.addClickHandler;c.addClickHandler=function(a,b,e){var d=b;b=function(a,b){if(null==b){var e=mxEvent.getSource(a);
"a"==e.nodeName.toLowerCase()&&(b=e.getAttribute("href"))}null!=b&&c.isCustomLink(b)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&c.customLinkClicked(b)&&mxEvent.consume(a);null!=d&&d(a,b)};k.call(this,a,b,e)};d.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");
-var q=c.getExportVariables;c.getExportVariables=function(){var b=q.apply(this,arguments),c=a.getCurrentFile();null!=c&&(b.filename=c.getTitle());b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var t=c.getGlobalVariable;c.getGlobalVariable=function(b){var c=a.getCurrentFile();return"filename"==b&&null!=c?c.getTitle():"page"==b&&null!=a.currentPage?a.currentPage.getName():
-"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:t.apply(this,arguments)};var x=c.labelLinkClicked;c.labelLinkClicked=function(a,b,e){var d=b.getAttribute("href");if(null==d||!c.isCustomLink(d)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))x.apply(this,arguments);else{if(!c.isEnabled()||null!=a&&c.isCellLocked(a.cell))c.customLinkClicked(d),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=
+var q=c.getExportVariables;c.getExportVariables=function(){var b=q.apply(this,arguments),c=a.getCurrentFile();null!=c&&(b.filename=c.getTitle());b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var u=c.getGlobalVariable;c.getGlobalVariable=function(b){var c=a.getCurrentFile();return"filename"==b&&null!=c?c.getTitle():"page"==b&&null!=a.currentPage?a.currentPage.getName():
+"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:u.apply(this,arguments)};var x=c.labelLinkClicked;c.labelLinkClicked=function(a,b,e){var d=b.getAttribute("href");if(null==d||!c.isCustomLink(d)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))x.apply(this,arguments);else{if(!c.isEnabled()||null!=a&&c.isCellLocked(a.cell))c.customLinkClicked(d),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=
function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var y=this.actions.get("print");y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);y.visible=y.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"find"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",
!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize"),this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,
function(a){var b=this.editor.graph,c=b.cellEditor.text2,e=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=e&&(e.parentNode.removeChild(e),e=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<
@@ -3484,16 +3488,16 @@ null!=y&&(this.styleInput=document.createElement("input"),this.styleInput.setAtt
this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var E=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:E.apply(this,arguments)}}y=document.getElementById("geInfo");
null!=y&&y.parentNode.removeChild(y);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var z=null;mxEvent.addListener(c.container,"dragleave",function(a){c.isEnabled()&&(null!=z&&(z.parentNode.removeChild(z),z=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(a){null==z&&(!mxClient.IS_IE||10<document.documentMode)&&(z=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();
a.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(a){null!=z&&(z.parentNode.removeChild(z),z=null);if(c.isEnabled()){var b=mxUtils.convertPoint(c.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),e=c.view.translate,d=c.view.scale,f=b.x/d-e.x,g=b.y/d-e.y;if(0<a.dataTransfer.files.length)mxEvent.isAltDown(a)&&(g=f=null),this.importFiles(a.dataTransfer.files,f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));
-else{mxEvent.isAltDown(a)&&(g=f=0);var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,b=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=b)c.setSelectionCells(this.importXml(b,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var m=a.dataTransfer.getData("text/html"),b=document.createElement("div");b.innerHTML=c.sanitizeHtml(m);var k=null,e=b.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),
-null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(k=!0)):(e=b.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):(b=b.getElementsByTagName("pre"),null!=b&&1==b.length&&(m=mxUtils.getTextContent(b[0]))));var n=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,g,!0,k,null,n))});k&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;p()},mxEvent.isControlDown(a)):p()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?
-this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(a){var b=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,b)),e/Math.max(1,a));c.setSelectionCell(c.insertVertex(null,null,"",f,g,b*e,a*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){c.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,
+else{mxEvent.isAltDown(a)&&(g=f=0);var m=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,b=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=b)c.setSelectionCells(this.importXml(b,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),b=document.createElement("div");b.innerHTML=c.sanitizeHtml(l);var k=null,e=b.getElementsByTagName("img");null!=e&&1==e.length?(l=e[0].getAttribute("src"),
+null==l&&(l=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(k=!0)):(e=b.getElementsByTagName("a"),null!=e&&1==e.length?l=e[0].getAttribute("href"):(b=b.getElementsByTagName("pre"),null!=b&&1==b.length&&(l=mxUtils.getTextContent(b[0]))));var n=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(l,f,g,!0,k,null,n))});k&&null!=l&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;p()},mxEvent.isControlDown(a)):p()}else null!=m&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)?
+this.loadImage(decodeURIComponent(m),mxUtils.bind(this,function(a){var b=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,b)),e/Math.max(1,a));c.setSelectionCell(c.insertVertex(null,null,"",f,g,b*e,a*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+m+";"))}),mxUtils.bind(this,function(a){c.setSelectionCells(this.insertTextAt(m,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,
"text/plain")&&c.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,e=!1,d=0;d<c.types.length;d++)if("text/"===
c.types[d].substring(0,5)){e=!0;break}if(!e){var f=c.items;for(index in f){var l=f[index];if("file"===l.kind){if(a.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(b,c,e,d,f,g){a.insertImage(b,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(x){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=
function(){function a(){window.setTimeout(function(){d.innerHTML="&nbsp;";d.focus();document.execCommand("selectAll",!1,null)},0)}var c=this.editor.graph,d=document.createElement("div");d.setAttribute("autocomplete","off");d.setAttribute("autocorrect","off");d.setAttribute("autocapitalize","off");d.setAttribute("spellcheck","false");d.style.textRendering="optimizeSpeed";d.style.fontFamily="monospace";d.style.wordBreak="break-all";d.style.background="transparent";d.style.color="transparent";d.style.position=
"absolute";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.display="block";d.style.fontSize="1";d.style.zIndex="-1";d.style.resize="none";d.style.outline="none";d.style.width="1px";d.style.height="1px";mxUtils.setOpacity(d,0);d.contentEditable=!0;d.innerHTML="&nbsp;";var f=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);
null==c.container||!c.isEnabled()||c.isMouseDown||c.isEditing()||null!=this.dialog||"INPUT"==b.nodeName||"TEXTAREA"==b.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||f||(d.style.left=c.container.scrollLeft+10+"px",d.style.top=c.container.scrollTop+10+"px",c.container.appendChild(d),f=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){d.focus();document.execCommand("selectAll",!1,null)},0):(d.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,
"keyup",mxUtils.bind(this,function(a){var b=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=b&&17!=b&&91!=b||(f=!1,c.isEditing()||null!=this.dialog||null==c.container||c.container.focus(),d.parentNode.removeChild(d),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(d,"copy",mxUtils.bind(this,function(b){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(d),a()}catch(v){this.handleError(v)}}));mxEvent.addListener(d,"cut",mxUtils.bind(this,function(b){if(c.isEnabled())try{mxClipboard.copy(c),
-this.copyCells(d,!0),a()}catch(v){this.handleError(v)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&((new Date).getTime(),d.innerHTML="&nbsp;",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0,!0),mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,d,!1,!0)}),0))}),!0);var l=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:l.apply(this,arguments)}};
+this.copyCells(d,!0),a()}catch(v){this.handleError(v)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&((new Date).getTime(),d.innerHTML="&nbsp;",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0,!0),mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,d,!1,!0)}),0))}),!0);var m=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:m.apply(this,arguments)}};
EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||
"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),
this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(b){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(a,c){var b=c.getProperty("customFonts");this.menus.customFonts=b;mxSettings.setCustomFonts(b);mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));
@@ -3516,7 +3520,7 @@ Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.edi
c,d,f,l){if(null!=c&&0<c.length){!this.useCanvasForExport&&/(\.png)$/i.test(c)?c=c.substring(0,c.length-4)+".drawio":/(\.pdf)$/i.test(c)&&(c=c.substring(0,c.length-4)+".drawio");var b=mxUtils.bind(this,function(a){c=0<=c.lastIndexOf(".")?c.substring(0,c.lastIndexOf("."))+".drawio":c+".drawio";if("<mxlibrary"==a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,a,c))}catch(x){this.handleError(x,
mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,c,f)});if(/(\.v(dx|sdx?))($|\?)/i.test(c)||/(\.vs(x|sx?))($|\?)/i.test(c))this.importVisio(d,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}));else if(/(\.*<graphml )/.test(a))this.importGraphML(a,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,c))this.parseFile(d,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),
200<=a.status&&299>=a.status?b(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(a))/(\.json)$/i.test(c)&&(c=c.substring(0,c.length-5)+".drawio"),this.convertLucidChart(a,mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,c,f)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==a.substring(0,10)){this.spinner.stop();
-null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,a,d.name))}catch(t){this.handleError(t,mxResources.get("errorLoadingFile"))}}else if(0==a.indexOf("PK"))this.importZipFile(d,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(a,c,f)}));else{if("image/png"==d.type.substring(0,9))a=this.extractGraphModelFromPng(a);else if("application/pdf"==
+null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,a,d.name))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}else if(0==a.indexOf("PK"))this.importZipFile(d,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(a,c,f)}));else{if("image/png"==d.type.substring(0,9))a=this.extractGraphModelFromPng(a);else if("application/pdf"==
d.type){var e=Editor.extractGraphModelFromPdf(a);null!=e&&(a=e)}this.spinner.stop();this.openLocalFile(a,c,f,l,null!=l?d:null)}}};EditorUi.prototype.openFiles=function(a,c){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var b=0;b<a.length;b++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.openFileHandle(b.target.result,a.name,a,c)}catch(v){this.handleError(v)}});b.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);
window.openFile=null});"image"!==a.type.substring(0,5)&&"application/pdf"!==a.type||"image/svg"===a.type.substring(0,9)?b.readAsText(a):b.readAsDataURL(a)})(a[b])};EditorUi.prototype.openLocalFile=function(a,c,d,f,l){var b=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==c&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var b=mxUtils.parseXml(a);null!=b&&(this.editor.setGraphXml(b.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,
a,c||this.defaultFilename,d,f,l))});if(null!=a&&0<a.length)null==b||!b.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=b&&b.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,c),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=b&&b.isModified()?
@@ -3531,13 +3535,13 @@ l);mxEvent.addListener(window,"message",mxUtils.bind(this,function(e){if(e.sourc
(a=Graph.decompress(a)))}catch(da){}return a});if("json"==urlParams.proto){try{g=JSON.parse(g)}catch(U){g=null}try{if(null==g)return;if("dialog"==g.action){this.showError(null!=g.titleKey?mxResources.get(g.titleKey):g.title,null!=g.messageKey?mxResources.get(g.messageKey):g.message,null!=g.buttonKey?mxResources.get(g.buttonKey):g.button);null!=g.modified&&(this.editor.modified=g.modified);return}if("prompt"==g.action){this.spinner.stop();var m=new FilenameDialog(this,g.defaultValue||"",null!=g.okKey?
mxResources.get(g.okKey):g.ok,function(a){null!=a?k.postMessage(JSON.stringify({event:"prompt",value:a,message:g}),"*"):k.postMessage(JSON.stringify({event:"prompt-cancel",message:g}),"*")},null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(m.container,300,80,!0,!1);m.init();return}if("draft"==g.action){var n=l(g.xml);this.spinner.stop();m=new DraftDialog(this,mxResources.get("draftFound",[g.name||this.defaultFilename]),n,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",
result:"edit",message:g}),"*")}),mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:g}),"*")}),g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(m.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));
-try{m.init()}catch(U){k.postMessage(JSON.stringify({event:"draft",error:U.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var p=1==g.enableRecent,q=1==g.enableSearch,t=1==g.enableCustomTemp,m=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,message:g}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),
-null,null,null,null,null,null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,t?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},
+try{m.init()}catch(U){k.postMessage(JSON.stringify({event:"draft",error:U.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var p=1==g.enableRecent,q=1==g.enableSearch,u=1==g.enableCustomTemp,m=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,message:g}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),
+null,null,null,null,null,null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,u?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},
0)})}):null);this.showDialog(m.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));m.init();return}if("textContent"==g.action){var x=this.getDiagramTextContent();k.postMessage(JSON.stringify({event:"textContent",data:x,message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=
-g.modified);return}if("spinner"==g.action){var v=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,v):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var J=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var u=this.editor.graph,K=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);
-this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=J;k.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=Editor.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(J)));u!=this.editor.graph&&u.container.parentNode.removeChild(u.container);K(a)}),L=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=
-L){for(var O=u.getGlobalVariable,u=this.createTemporaryGraph(u.getStylesheet()),H,S=0;S<this.pages.length;S++)if(this.pages[S].getId()==L){H=this.updatePageRoot(this.pages[S]);break}u.getGlobalVariable=function(a){return"page"==a?H.getName():"pagenumber"==a?1:O.apply(this,arguments)};document.body.appendChild(u.container);u.model.setRoot(H.root)}if(null!=g.layerIds){for(var fa=u.model,ga=fa.getChildCells(fa.getRoot()),m={},S=0;S<g.layerIds.length;S++)m[g.layerIds[S]]=!0;for(S=0;S<ga.length;S++)fa.setVisible(ga[S],
-m[ga[S].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,g.scale,null,null,null,u)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=L?"&pageId="+L:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(J))).send(mxUtils.bind(this,function(a){200<=
+g.modified);return}if("spinner"==g.action){var v=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,v):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var J=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var t=this.editor.graph,K=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);
+this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=J;k.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=Editor.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(J)));t!=this.editor.graph&&t.container.parentNode.removeChild(t.container);K(a)}),L=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=
+L){for(var O=t.getGlobalVariable,t=this.createTemporaryGraph(t.getStylesheet()),H,S=0;S<this.pages.length;S++)if(this.pages[S].getId()==L){H=this.updatePageRoot(this.pages[S]);break}t.getGlobalVariable=function(a){return"page"==a?H.getName():"pagenumber"==a?1:O.apply(this,arguments)};document.body.appendChild(t.container);t.model.setRoot(H.root)}if(null!=g.layerIds){for(var fa=t.model,ga=fa.getChildCells(fa.getRoot()),m={},S=0;S<g.layerIds.length;S++)m[g.layerIds[S]]=!0;for(S=0;S<ga.length;S++)fa.setVisible(ga[S],
+m[ga[S].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,g.scale,null,null,null,t)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=L?"&pageId="+L:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(J))).send(mxUtils.bind(this,function(a){200<=
a.getStatus()&&299>=a.getStatus()?K("data:image/png;base64,"+a.getText()):B(null)}),mxUtils.bind(this,function(){B(null)}))}}else{null!=g.xml&&0<g.xml.length&&this.setFileData(g.xml);v=this.createLoadMessage("export");v.message=g;if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ba=this.getXmlFileData();v.xml=mxUtils.getXml(ba);v.data=this.getFileData(null,null,!0,null,null,null,ba);v.format=g.format}else if("html"==g.format)J=this.editor.getGraphXml(),
v.data=this.getHtml(J,this.editor.graph),v.xml=mxUtils.getXml(J),v.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;var Y=this.editor.graph.background;Y==mxConstants.NONE&&(Y=null);v.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);v.format="svg";var X=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();v.data=Editor.createSvgDataUri(a);k.postMessage(JSON.stringify(v),"*")});if("xmlsvg"==g.format)(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,
null!=g.spinKey?mxResources.get(g.spinKey):g.spin))&&this.getEmbeddedSvg(v.xml,this.editor.graph,null,!0,X,null,null,g.embedImages);else if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){this.editor.graph.setEnabled(!1);var ca=this.editor.graph.getSvg(Y);this.embedFonts(ca,mxUtils.bind(this,function(a){g.embedImages||null==g.embedImages?this.editor.convertImages(a,mxUtils.bind(this,function(a){X(mxUtils.getXml(a))})):X(mxUtils.getXml(a))}))}return}k.postMessage(JSON.stringify(v),
@@ -3553,13 +3557,13 @@ a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.st
c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),
a.appendChild(c),d=c));"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("exit")),c.setAttribute("title",mxResources.get("exit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),a.appendChild(c),d=c);d.style.marginRight="20px";this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};
EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=
-function(a,c){for(var b=this.editor.graph,d=b.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](b);if(null!=a[e].config)for(var l in a[e].config)f[l]=a[e].config[l];this.executeLayout(function(){f.execute(b.getDefaultParent(),0==d.length?null:d)},e==a.length-1,c)}};EditorUi.prototype.importCsv=function(a,c){try{var b=a.split("\n"),d=[],e=[],f={};if(0<b.length){var l={},k=null,q=null,y=null,E=null,z=null,C=null,A=null,D=null,G="",F="auto",I="auto",J=null,u=null,K=40,B=40,L=100,
+function(a,c){for(var b=this.editor.graph,d=b.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](b);if(null!=a[e].config)for(var l in a[e].config)f[l]=a[e].config[l];this.executeLayout(function(){f.execute(b.getDefaultParent(),0==d.length?null:d)},e==a.length-1,c)}};EditorUi.prototype.importCsv=function(a,c){try{var b=a.split("\n"),d=[],e=[],f={};if(0<b.length){var l={},k=null,q=null,y=null,E=null,z=null,C=null,A=null,D=null,G="",F="auto",I="auto",J=null,t=null,K=40,B=40,L=100,
O=0,H=this.editor.graph;H.getGraphBounds();for(var S=function(){null!=c?c(ra):(H.setSelectionCells(ra),H.scrollCellToVisible(H.getSelectionCell()))},fa=H.getFreeInsertPoint(),ga=fa.x,ba=fa.y,fa=ba,Y=null,X="auto",D=null,ca=[],ha=null,ea=null,U=0;U<b.length&&"#"==b[U].charAt(0);){a=b[U];for(U++;U<b.length&&"\\"==a.charAt(a.length-1)&&"#"==b[U].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(b[U].substring(1)),U++;if("#"!=a.charAt(1)){var da=a.indexOf(":");if(0<da){var Q=mxUtils.trim(a.substring(1,
-da)),M=mxUtils.trim(a.substring(da+1));"label"==Q?Y=H.sanitizeHtml(M):"labelname"==Q&&0<M.length&&"-"!=M?E=M:"labels"==Q&&0<M.length&&"-"!=M?z=JSON.parse(M):"style"==Q?k=M:"parentstyle"==Q?C=M:"stylename"==Q&&0<M.length&&"-"!=M?y=M:"styles"==Q&&0<M.length&&"-"!=M?q=JSON.parse(M):"identity"==Q&&0<M.length&&"-"!=M?A=M:"parent"==Q&&0<M.length&&"-"!=M?D=M:"namespace"==Q&&0<M.length&&"-"!=M?G=M:"width"==Q?F=M:"height"==Q?I=M:"left"==Q&&0<M.length?J=M:"top"==Q&&0<M.length?u=M:"ignore"==Q?ea=M.split(","):
+da)),M=mxUtils.trim(a.substring(da+1));"label"==Q?Y=H.sanitizeHtml(M):"labelname"==Q&&0<M.length&&"-"!=M?E=M:"labels"==Q&&0<M.length&&"-"!=M?z=JSON.parse(M):"style"==Q?k=M:"parentstyle"==Q?C=M:"stylename"==Q&&0<M.length&&"-"!=M?y=M:"styles"==Q&&0<M.length&&"-"!=M?q=JSON.parse(M):"identity"==Q&&0<M.length&&"-"!=M?A=M:"parent"==Q&&0<M.length&&"-"!=M?D=M:"namespace"==Q&&0<M.length&&"-"!=M?G=M:"width"==Q?F=M:"height"==Q?I=M:"left"==Q&&0<M.length?J=M:"top"==Q&&0<M.length?t=M:"ignore"==Q?ea=M.split(","):
"connect"==Q?ca.push(JSON.parse(M)):"link"==Q?ha=M:"padding"==Q?O=parseFloat(M):"edgespacing"==Q?K=parseFloat(M):"nodespacing"==Q?B=parseFloat(M):"levelspacing"==Q?L=parseFloat(M):"layout"==Q&&(X=M)}}}if(null==b[U])throw Error(mxResources.get("invalidOrMissingFile"));for(var la=this.editor.csvToArray(b[U]),Q=da=null,M=[],P=0;P<la.length;P++)A==la[P]&&(da=P),D==la[P]&&(Q=P),M.push(mxUtils.trim(la[P]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Y&&(Y="%"+M[0]+"%");if(null!=
ca)for(var T=0;T<ca.length;T++)null==l[ca[T].to]&&(l[ca[T].to]={});A=[];for(P=U+1;P<b.length;P++){var ja=this.editor.csvToArray(b[P]);if(null==ja){var sa=40<b[P].length?b[P].substring(0,40)+"...":b[P];throw Error(sa+" ("+P+"):\n"+mxResources.get("containsValidationErrors"));}0<ja.length&&A.push(ja)}H.model.beginUpdate();try{for(P=0;P<A.length;P++){var ja=A[P],N=null,oa=null!=da?G+ja[da]:null;null!=oa&&(N=H.model.getCell(oa));var b=null!=N,W=new mxCell(Y,new mxGeometry(ga,fa,0,0),k||"whiteSpace=wrap;html=1;");
W.vertex=!0;W.id=oa;for(var Z=0;Z<ja.length;Z++)H.setAttributeForCell(W,M[Z],ja[Z]);if(null!=E&&null!=z){var R=z[W.getAttribute(E)];null!=R&&H.labelChanged(W,R)}if(null!=y&&null!=q){var ia=q[W.getAttribute(y)];null!=ia&&(W.style=ia)}H.setAttributeForCell(W,"placeholders","1");W.style=H.replacePlaceholders(W,W.style);b&&(H.model.setGeometry(N,W.geometry),H.model.setStyle(N,W.style),0>mxUtils.indexOf(e,N)&&e.push(N));N=W;if(!b)for(T=0;T<ca.length;T++)l[ca[T].to][N.getAttribute(ca[T].to)]=N;null!=ha&&
-"link"!=ha&&(H.setLinkForCell(N,N.getAttribute(ha)),H.setAttributeForCell(N,ha,null));H.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var ka=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=J&&null!=N.getAttribute(J)&&(N.geometry.x=ga+parseFloat(N.getAttribute(J))),null!=u&&null!=N.getAttribute(u)&&(N.geometry.y=ba+parseFloat(N.getAttribute(u))),"@"==F.charAt(0)&&null!=N.getAttribute(F.substring(1))?N.geometry.width=parseFloat(N.getAttribute(F.substring(1))):N.geometry.width=
+"link"!=ha&&(H.setLinkForCell(N,N.getAttribute(ha)),H.setAttributeForCell(N,ha,null));H.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var ka=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=J&&null!=N.getAttribute(J)&&(N.geometry.x=ga+parseFloat(N.getAttribute(J))),null!=t&&null!=N.getAttribute(t)&&(N.geometry.y=ba+parseFloat(N.getAttribute(t))),"@"==F.charAt(0)&&null!=N.getAttribute(F.substring(1))?N.geometry.width=parseFloat(N.getAttribute(F.substring(1))):N.geometry.width=
"auto"==F?ka.width+O:parseFloat(F),"@"==I.charAt(0)&&null!=N.getAttribute(I.substring(1))?N.geometry.height=parseFloat(N.getAttribute(I.substring(1))):N.geometry.height="auto"==I?ka.height+O:parseFloat(I),fa+=N.geometry.height+B);b?(null==f[oa]&&(f[oa]=[]),f[oa].push(N)):(D=null!=Q?H.model.getCell(G+ja[Q]):null,d.push(N),null!=D?(D.style=H.replacePlaceholders(D,C),H.addCell(N,D)):e.push(H.addCell(N)))}for(var qa=e.slice(),ra=e.slice(),T=0;T<ca.length;T++)for(var Aa=ca[T],P=0;P<d.length;P++){var N=
d[P],wa=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d&&(H.setAttributeForCell(b,c.from,null),""!=d))for(var d=d.split(","),e=0;e<d.length;e++){var f=l[c.to][d[e]];if(null!=f){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||"")+(g||""));null!=c.tolabel&&(g=(g||"")+(f.getAttribute(c.tolabel)||""));var m="target"==c.placeholders==!c.invert?f:a,m=null!=c.style?H.replacePlaceholders(m,c.style):H.createCurrentEdgeStyle(),g=H.insertEdge(null,null,g||"",c.invert?
f:a,c.invert?a:f,m);if(null!=c.labels)for(m=0;m<c.labels.length;m++){var k=c.labels[m],n=new mxCell(k.label||m,new mxGeometry(null!=k.x?k.x:0,null!=k.y?k.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;if(null!=k.dx||null!=k.dy)n.geometry.offset=new mxPoint(null!=k.dx?k.dx:0,null!=k.dy?k.dy:0);g.insert(n)}ra.push(g);mxUtils.remove(c.invert?a:f,qa)}}});wa(N,N,Aa);if(null!=f[N.id])for(Z=0;Z<f[N.id].length;Z++)wa(N,f[N.id][Z],Aa)}if(null!=ea)for(P=0;P<d.length;P++)for(N=
@@ -3598,14 +3602,14 @@ isLocalStorage)}catch(v){null!=c&&c(v)}};d.onsuccess=mxUtils.bind(this,function(
urlParams.forceMigration);document.body.appendChild(b);var c=!0,d=!1,e,f=0,g=mxUtils.bind(this,function(){d=!0;this.setDatabaseItem(".drawioMigrated3",!0);b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){f++;k()}),k=mxUtils.bind(this,function(){try{if(f>=e.length)g();else{var a=e[f];StorageFile.getFileContent(this,a,mxUtils.bind(this,function(c){null==c||".scratchpad"==a&&c==this.emptyLibraryXml?b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
funtionName:"getLocalStorageFile",functionArgs:[a]}),"*"):l()}),l)}}catch(I){console.log(I)}}),m=mxUtils.bind(this,function(a){try{this.setDatabaseItem(null,[{title:a.title,size:a.data.length,lastModified:Date.now(),type:a.isLib?"L":"F"},{title:a.title,data:a.data}],l,l,["filesInfo","files"])}catch(I){console.log(I)}});a=mxUtils.bind(this,function(a){try{if(a.source==b.contentWindow){var f={};try{f=JSON.parse(a.data)}catch(J){}"init"==f.event?(b.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
"*"),b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=f.event||d||(c?null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?(e=f.resp[0],c=!1,k()):g():null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?m(f.resp[0]):l())}}catch(J){console.log(J)}});window.addEventListener("message",a)}})));a(c);c.onversionchange=function(){c.close()}});d.onerror=c;d.onblocked=function(){}}catch(m){null!=c&&c(m)}else null!=c&&c()}else a(this.database)};
-EditorUi.prototype.setDatabaseItem=function(a,c,d,f,l){this.openDatabase(mxUtils.bind(this,function(b){try{l=l||"objects";Array.isArray(l)||(l=[l],a=[a],c=[c]);var e=b.transaction(l,"readwrite");e.oncomplete=d;e.onerror=f;for(b=0;b<l.length;b++)e.objectStore(l[b]).put(null!=a&&null!=a[b]?{key:a[b],data:c[b]}:c[b])}catch(t){null!=f&&f(t)}}),f)};EditorUi.prototype.removeDatabaseItem=function(a,c,d,f){this.openDatabase(mxUtils.bind(this,function(b){f=f||"objects";Array.isArray(f)||(f=[f],a=[a]);b=b.transaction(f,
+EditorUi.prototype.setDatabaseItem=function(a,c,d,f,l){this.openDatabase(mxUtils.bind(this,function(b){try{l=l||"objects";Array.isArray(l)||(l=[l],a=[a],c=[c]);var e=b.transaction(l,"readwrite");e.oncomplete=d;e.onerror=f;for(b=0;b<l.length;b++)e.objectStore(l[b]).put(null!=a&&null!=a[b]?{key:a[b],data:c[b]}:c[b])}catch(u){null!=f&&f(u)}}),f)};EditorUi.prototype.removeDatabaseItem=function(a,c,d,f){this.openDatabase(mxUtils.bind(this,function(b){f=f||"objects";Array.isArray(f)||(f=[f],a=[a]);b=b.transaction(f,
"readwrite");b.oncomplete=c;b.onerror=d;for(var e=0;e<f.length;e++)b.objectStore(f[e])["delete"](a[e])}),d)};EditorUi.prototype.getDatabaseItem=function(a,c,d,f){this.openDatabase(mxUtils.bind(this,function(b){try{f=f||"objects";var e=b.transaction([f],"readonly").objectStore(f).get(a);e.onsuccess=function(){c(e.result)};e.onerror=d}catch(v){null!=d&&d(v)}}),d)};EditorUi.prototype.getDatabaseItems=function(a,c,d){this.openDatabase(mxUtils.bind(this,function(b){try{d=d||"objects";var e=b.transaction([d],
"readonly").objectStore(d).openCursor(IDBKeyRange.lowerBound(0)),f=[];e.onsuccess=function(b){null==b.target.result?a(f):(f.push(b.target.result.value),b.target.result["continue"]())};e.onerror=c}catch(v){null!=c&&c(v)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(a,c,d){this.openDatabase(mxUtils.bind(this,function(b){try{d=d||"objects";var e=b.transaction([d],"readonly").objectStore(d).getAllKeys();e.onsuccess=function(){a(e.result)};e.onerror=c}catch(n){null!=c&&c(n)}}),c)};EditorUi.prototype.commentsSupported=
function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(a,c){var b=this.getCurrentFile();null!=b?b.getComments(a,c):a([])};EditorUi.prototype.addComment=function(a,c,d){var b=this.getCurrentFile();
null!=b?b.addComment(a,c,d):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,c){var b=this.getCurrentFile();return null!=b?b.newComment(a,c):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();
return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,c){var b=this.getCurrentFile();null!=b&&b.getRevisions?b.getRevisions(a,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language",
-"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(a,c,d,f,l,k,q,t){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(a,c,d,f,l,k,q,t)};EditorUi.prototype.loadFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(a)};EditorUi.prototype.createSvgDataUri=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(a)};EditorUi.prototype.embedCssFonts=function(a,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
-return this.editor.embedCssFonts(a,c)};EditorUi.prototype.embedExtFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(a)};EditorUi.prototype.exportToCanvas=function(a,c,d,f,l,k,q,t,x,y,E,z,C,A,D,G){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(a,c,d,f,l,k,q,t,x,y,E,z,C,A,D,G)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
+"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(a,c,d,f,l,k,q,u){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(a,c,d,f,l,k,q,u)};EditorUi.prototype.loadFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(a)};EditorUi.prototype.createSvgDataUri=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(a)};EditorUi.prototype.embedCssFonts=function(a,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
+return this.editor.embedCssFonts(a,c)};EditorUi.prototype.embedExtFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(a)};EditorUi.prototype.exportToCanvas=function(a,c,d,f,l,k,q,u,x,y,E,z,C,A,D,G){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(a,c,d,f,l,k,q,u,x,y,E,z,C,A,D,G)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(a,c,d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(a,c,d,f)};EditorUi.prototype.convertImageToDataUri=function(a,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(a,c)};EditorUi.prototype.base64Encode=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(a)};EditorUi.prototype.updateCRC=
function(a,c,d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(a,c,d,f)};EditorUi.prototype.crc32=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(a)};EditorUi.prototype.writeGraphModelToPng=function(a,c,d,f,l){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(a,c,d,f,l)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var a=[],c=0;c<localStorage.length;c++){var d=localStorage.key(c),f=localStorage.getItem(d);if(0<d.length&&(".scratchpad"==d||"."!=d.charAt(0))&&0<f.length){var l="<mxfile "===f.substring(0,8)||"<?xml"===f.substring(0,5)||"\x3c!--[if IE]>"===f.substring(0,12),f="<mxlibrary>"===f.substring(0,11);(l||f)&&a.push(d)}}return a};EditorUi.prototype.getLocalStorageFile=function(a){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
@@ -3613,29 +3617,29 @@ var b=localStorage.getItem(a);return{title:a,data:b,isLib:"<mxlibrary>"===b.subs
var CommentsWindow=function(a,c,f,d,k,l){function q(){for(var a=z.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==z&&b++;C.style.display=0==b?"block":"none"}function b(a,b,c,d){function e(){b.removeChild(l);b.removeChild(k);g.style.display="block";f.style.display="block"}x={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var k=document.createElement("div");k.className="geCommentEditBtns";var m=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),q()):e();x=null});m.className="geCommentEditBtn";k.appendChild(m);var n=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);x=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(n.click(),mxEvent.consume(a)):27==a.keyCode&&(m.click(),mxEvent.consume(a)))}));n.focus();n.className="geCommentEditBtn gePrimaryBtn";k.appendChild(n);b.insertBefore(k,f);g.style.display="none";f.style.display="none";l.focus()}function e(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
-[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function g(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function p(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function m(a){a.style.border="";a.removeChild(a.busyImg)}function n(c,d,f,l,k){function u(a,b,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
-"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){b(a,c);a.preventDefault();mxEvent.consume(a)});E.appendChild(e);d&&(e.style.display="none")}function B(){function a(c){b.push(d);if(null!=c.replies)for(var e=0;e<c.replies.length;e++)d=d.nextSibling,a(c.replies[e])}var b=[],d=y;a(c);return{pdiv:d,replies:b}}function A(d,e,f,k,q){function t(){g(v);c.addReply(A,function(a){A.id=a;c.replies.push(A);m(v);f&&f()},function(b){u();p(v);a.handleError(b,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,q)}function u(){b(A,v,function(a){t()},!0)}var x=B().pdiv,A=a.newComment(d,a.getCurrentUser());A.pCommentId=c.id;null==c.replies&&(c.replies=[]);var v=n(A,c.replies,x,l+1);e?u():t()}if(k||!c.isResolved){C.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",c.id);y.style.marginLeft=20*l+5+"px";c.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite");
+[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function g(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function p(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function m(a){a.style.border="";a.removeChild(a.busyImg)}function n(c,d,f,l,k){function t(a,b,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
+"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){b(a,c);a.preventDefault();mxEvent.consume(a)});E.appendChild(e);d&&(e.style.display="none")}function B(){function a(c){b.push(d);if(null!=c.replies)for(var e=0;e<c.replies.length;e++)d=d.nextSibling,a(c.replies[e])}var b=[],d=y;a(c);return{pdiv:d,replies:b}}function A(d,e,f,k,q){function t(){g(y);c.addReply(A,function(a){A.id=a;c.replies.push(A);m(y);f&&f()},function(b){u();p(y);a.handleError(b,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,q)}function u(){b(A,y,function(a){t()},!0)}var x=B().pdiv,A=a.newComment(d,a.getCurrentUser());A.pCommentId=c.id;null==c.replies&&(c.replies=[]);var y=n(A,c.replies,x,l+1);e?u():t()}if(k||!c.isResolved){C.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",c.id);y.style.marginLeft=20*l+5+"px";c.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite");
var D=document.createElement("div");D.className="geCommentHeader";var L=document.createElement("img");L.className="geCommentUserImg";L.src=c.user.pictureUrl||Editor.userImage;D.appendChild(L);L=document.createElement("div");L.className="geCommentHeaderTxt";D.appendChild(L);var F=document.createElement("div");F.className="geCommentUsername";mxUtils.write(F,c.user.displayName||"");L.appendChild(F);F=document.createElement("div");F.className="geCommentDate";F.setAttribute("data-commentId",c.id);e(c,
-F);L.appendChild(F);y.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");y.appendChild(D);c.isLocked&&(y.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var E=document.createElement("ul");E.className="geCommentActionsList";D.appendChild(E);v||c.isLocked||0!=l&&!t||u(mxResources.get("reply"),function(){A("",!0)},c.isResolved);L=a.getCurrentUser();null==L||L.id!=c.user.id||v||c.isLocked||(u(mxResources.get("edit"),
-function(){function d(){b(c,y,function(){g(y);c.editComment(c.content,function(){m(y)},function(b){p(y);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),u(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){g(y);c.deleteComment(function(a){if(!0===a){a=y.querySelector(".geCommentTxt");a.innerHTML="";mxUtils.write(a,mxResources.get("msgDeleted"));var b=y.querySelectorAll(".geCommentAction");for(a=
-0;a<b.length;a++)b[a].parentNode.removeChild(b[a]);m(y);y.style.opacity="0.5"}else{b=B(c).replies;for(a=0;a<b.length;a++)z.removeChild(b[a]);for(a=0;a<d.length;a++)if(d[a]==c){d.splice(a,1);break}C.style.display=0==z.getElementsByTagName("div").length?"block":"none"}},function(b){p(y);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||u(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function b(){var b=
+F);L.appendChild(F);y.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");y.appendChild(D);c.isLocked&&(y.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var E=document.createElement("ul");E.className="geCommentActionsList";D.appendChild(E);v||c.isLocked||0!=l&&!u||t(mxResources.get("reply"),function(){A("",!0)},c.isResolved);L=a.getCurrentUser();null==L||L.id!=c.user.id||v||c.isLocked||(t(mxResources.get("edit"),
+function(){function d(){b(c,y,function(){g(y);c.editComment(c.content,function(){m(y)},function(b){p(y);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),t(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){g(y);c.deleteComment(function(a){if(!0===a){a=y.querySelector(".geCommentTxt");a.innerHTML="";mxUtils.write(a,mxResources.get("msgDeleted"));var b=y.querySelectorAll(".geCommentAction");for(a=
+0;a<b.length;a++)b[a].parentNode.removeChild(b[a]);m(y);y.style.opacity="0.5"}else{b=B(c).replies;for(a=0;a<b.length;a++)z.removeChild(b[a]);for(a=0;a<d.length;a++)if(d[a]==c){d.splice(a,1);break}C.style.display=0==z.getElementsByTagName("div").length?"block":"none"}},function(b){p(y);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||t(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function b(){var b=
a.target;b.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(b,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=c.isResolved?"none":"",e=B(c).replies,f="dark"==uiTheme?"transparent":c.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"),k=0;k<l.length;k++)l[k]!=b.parentNode&&(l[k].style.display=d);G||(e[g].style.display="none")}q()}c.isResolved?A(mxResources.get("reOpened")+": ",!0,b,!1,
!0):A(mxResources.get("markedAsResolved"),!1,b,!0)});y.appendChild(D);null!=f?z.insertBefore(y,f.nextSibling):z.appendChild(y);for(f=0;null!=c.replies&&f<c.replies.length;f++)D=c.replies[f],D.isResolved=c.isResolved,n(D,c.replies,null,l+1,k);null!=x&&(x.comment.id==c.id?(k=c.content,c.content=x.comment.content,b(c,y,x.saveCallback,x.deleteOnCancel),c.content=k):null==x.comment.id&&x.comment.pCommentId==c.id&&(z.appendChild(x.div),b(x.comment,x.div,x.saveCallback,x.deleteOnCancel)));return y}}var v=
-!a.canComment(),t=a.canReplyToReplies(),x=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var E=EditorUi.compactUi?"26px":"30px",z=document.createElement("div");z.className="geCommentsList";z.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;z.style.bottom=parseInt(E)+7+"px";y.appendChild(z);var C=document.createElement("span");C.style.cssText="display:none;padding-top:10px;text-align:center;";
+!a.canComment(),u=a.canReplyToReplies(),x=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var E=EditorUi.compactUi?"26px":"30px",z=document.createElement("div");z.className="geCommentsList";z.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;z.style.bottom=parseInt(E)+7+"px";y.appendChild(z);var C=document.createElement("span");C.style.cssText="display:none;padding-top:10px;text-align:center;";
mxUtils.write(C,mxResources.get("noCommentsFound"));var A=document.createElement("div");A.className="geToolbarContainer geCommentsToolbar";A.style.height=E;A.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";A.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(A.style.filter="none");E=document.createElement("a");E.className="geButton";mxClient.IS_QUIRKS&&(E.style.filter="none");if(!v){var D=E.cloneNode();D.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';
D.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(D,"click",function(c){function d(){b(e,f,function(b){g(f);a.addComment(b,function(a){b.id=a;F.push(b);m(f)},function(b){p(f);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var e=a.newComment("",a.getCurrentUser()),f=n(e,F,null,0);d();c.preventDefault();mxEvent.consume(c)});A.appendChild(D)}D=E.cloneNode();D.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';
D.setAttribute("title",mxResources.get("showResolved"));var G=!1;"dark"==uiTheme&&(D.style.filter="invert(100%)");mxEvent.addListener(D,"click",function(a){this.className=(G=!G)?"geButton geCheckedBtn":"geButton";I();a.preventDefault();mxEvent.consume(a)});A.appendChild(D);a.commentsRefreshNeeded()&&(D=E.cloneNode(),D.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',D.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(D.style.filter="invert(100%)"),
mxEvent.addListener(D,"click",function(a){I();a.preventDefault();mxEvent.consume(a)}),A.appendChild(D));a.commentsSaveNeeded()&&(E=E.cloneNode(),E.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',E.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&(E.style.filter="invert(100%)"),mxEvent.addListener(E,"click",function(a){l();a.preventDefault();mxEvent.consume(a)}),A.appendChild(E));y.appendChild(A);var F=[],I=mxUtils.bind(this,function(){this.hasError=
-!1;if(null!=x)try{x.div=x.div.cloneNode(!0);var c=x.div.querySelector(".geCommentEditTxtArea"),d=x.div.querySelector(".geCommentEditBtns");x.comment.content=c.value;c.parentNode.removeChild(c);d.parentNode.removeChild(d)}catch(B){a.handleError(B)}z.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";t=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function c(a){if(null!=
+!1;if(null!=x)try{x.div=x.div.cloneNode(!0);var c=x.div.querySelector(".geCommentEditTxtArea"),d=x.div.querySelector(".geCommentEditBtns");x.comment.content=c.value;c.parentNode.removeChild(c);d.parentNode.removeChild(d)}catch(B){a.handleError(B)}z.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";u=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function c(a){if(null!=
a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var b=0;b<a.length;b++)c(a[b].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});z.innerHTML="";z.appendChild(C);C.style.display="block";F=a;for(a=0;a<F.length;a++)c(F[a].replies),n(F[a],F,null,0,G);null!=x&&null==x.comment.id&&null==x.comment.pCommentId&&(z.appendChild(x.div),b(x.comment,x.div,x.saveCallback,x.deleteOnCancel))},mxUtils.bind(this,function(a){z.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+
(a&&a.message?": "+a.message:""));this.hasError=!0})):z.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});I();this.refreshComments=I;A=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(e(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}if(this.window.isVisible()){for(var b=z.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var f=b[d];c[f.getAttribute("data-commentId")]=f}for(d=0;d<F.length;d++)a(F[d])}});setInterval(A,6E4);this.refreshCommentsTime=
A;this.window=new mxWindow(mxResources.get("comments"),y,c,f,d,k,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,
(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var J=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",J);this.destroy=function(){mxEvent.removeListener(window,"resize",J);this.window.destroy()}},ConfirmDialog=
function(a,c,f,d,k,l,q,b,e,g,p){var m=document.createElement("div");m.style.textAlign="center";p=null!=p?p:44;var n=document.createElement("div");n.style.padding="6px";n.style.overflow="auto";n.style.maxHeight=p+"px";n.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(n.style.height="60px");mxUtils.write(n,c);m.appendChild(n);null!=g&&(n=document.createElement("div"),n.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",g),n.appendChild(c),m.appendChild(n));g=document.createElement("div");
-g.style.textAlign="center";g.style.whiteSpace="nowrap";var v=document.createElement("input");v.setAttribute("type","checkbox");l=mxUtils.button(l||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(v.checked)});l.className="geBtn";null!=b&&(l.innerHTML=b+"<br>"+l.innerHTML,l.style.paddingBottom="8px",l.style.paddingTop="8px",l.style.height="auto",l.style.width="40%");a.editor.cancelFirst&&g.appendChild(l);var t=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=f&&
-f(v.checked)});g.appendChild(t);null!=q?(t.innerHTML=q+"<br>"+t.innerHTML+"<br>",t.style.paddingBottom="8px",t.style.paddingTop="8px",t.style.height="auto",t.className="geBtn",t.style.width="40%"):t.className="geBtn gePrimaryBtn";a.editor.cancelFirst||g.appendChild(l);m.appendChild(g);e?(g.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.appendChild(v),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),n.appendChild(k),m.appendChild(n),
-mxEvent.addListener(k,"click",function(a){v.checked=!v.checked;mxEvent.consume(a)})):g.style.marginTop="12px";this.init=function(){t.focus()};this.container=m};function DiagramPage(a,c){this.node=a;null!=c?this.node.setAttribute("id",c):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
+g.style.textAlign="center";g.style.whiteSpace="nowrap";var v=document.createElement("input");v.setAttribute("type","checkbox");l=mxUtils.button(l||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(v.checked)});l.className="geBtn";null!=b&&(l.innerHTML=b+"<br>"+l.innerHTML,l.style.paddingBottom="8px",l.style.paddingTop="8px",l.style.height="auto",l.style.width="40%");a.editor.cancelFirst&&g.appendChild(l);var u=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=f&&
+f(v.checked)});g.appendChild(u);null!=q?(u.innerHTML=q+"<br>"+u.innerHTML+"<br>",u.style.paddingBottom="8px",u.style.paddingTop="8px",u.style.height="auto",u.className="geBtn",u.style.width="40%"):u.className="geBtn gePrimaryBtn";a.editor.cancelFirst||g.appendChild(l);m.appendChild(g);e?(g.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.appendChild(v),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),n.appendChild(k),m.appendChild(n),
+mxEvent.addListener(k,"click",function(a){v.checked=!v.checked;mxEvent.consume(a)})):g.style.marginTop="12px";this.init=function(){u.focus()};this.container=m};function DiagramPage(a,c){this.node=a;null!=c?this.node.setAttribute("id",c):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};function RenamePage(a,c,f){this.ui=a;this.page=c;this.previous=this.name=f}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(a,c,f){this.ui=a;this.oldIndex=c;this.newIndex=f}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(a,c,f){this.ui=a;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=f&&(c.viewState=f,this.neverShown=!1))}
@@ -3699,41 +3703,41 @@ b=new EmbedDialog(this,this.getLinkForPage(a,c));this.showDialog(b.container,440
(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,k){k.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(k.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(c,
a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,k));return k};a.beforeDecode=function(a,c,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(c.getAttribute("relatedPage"));if(null==k.relatedPage){var d=c.ownerDocument.createElement("diagram");d.setAttribute("id",c.getAttribute("relatedPage"));d.setAttribute("name",c.getAttribute("name"));k.relatedPage=new DiagramPage(d);d=c.getAttribute("viewState");null!=d&&(k.relatedPage.viewState=JSON.parse(d),c.removeAttribute("viewState"));
c=c.cloneNode(!0);d=c.firstChild;if(null!=d)for(k.relatedPage.root=a.decodeCell(d,!1),k=d.nextSibling,d.parentNode.removeChild(d),d=k;null!=d;){k=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=k}}return c};a.afterDecode=function(a,c,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var a=Graph.prototype.foldCells;Graph.prototype.foldCells=function(c,f,l,q,b){f=null!=f?f:!1;null==l&&(l=this.getFoldableCells(this.getSelectionCells(),c));this.stopEditing();this.model.beginUpdate();try{for(var d=l.slice(),g=[],k=0;k<l.length;k++){var m=this.getCurrentCellStyle(l[k]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(l[k],!0,mxUtils.bind(this,function(a,b){null!=b&&g.push(b);a!=l[k]&&g.push(a);return a==
-l[k]||!this.model.isCollapsed(a)})),this.model.setCollapsed(l[k],c))}for(k=0;k<g.length;k++)this.model.setVisible(g[k],!c);l=d;l=a.apply(this,arguments)}finally{this.model.endUpdate()}return l};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return x.isVertex(a)&&f(a)}function c(a){var b=!1;null!=a&&(b="1"==t.getCurrentCellStyle(a).treeMoving);
-return b}function f(a){var b=!1;null!=a&&(a=x.getParent(a),b=t.view.getState(a),b="tree"==(null!=b?b.style:t.getCellStyle(a)).containerType);return b}function q(a){var b=!1;null!=a&&(a=x.getParent(a),b=t.view.getState(a),t.view.getState(a),b=null!=(null!=b?b.style:t.getCellStyle(a)).childLayout);return b}function b(a){a=t.view.getState(a);if(null!=a){var b=t.getIncomingEdges(a.cell);if(0<b.length&&(b=t.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
-a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function e(a,c){c=null!=c?c:!0;t.model.beginUpdate();try{var d=t.model.getParent(a),e=t.getIncomingEdges(a),f=t.cloneCells([e[0],a]);t.model.setTerminal(f[0],t.model.getTerminal(e[0],!0),!0);var g=b(a),l=d.geometry;g==mxConstants.DIRECTION_SOUTH||
-g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=c?a.geometry.width+10:-f[1].geometry.width-10:f[1].geometry.y+=c?a.geometry.height+10:-f[1].geometry.height-10;t.view.currentRoot!=d&&(f[1].geometry.x-=l.x,f[1].geometry.y-=l.y);var k=t.view.getState(a),m=t.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(c?a.geometry.width+10:-f[1].geometry.width-10)*m:n.y+=(c?a.geometry.height+10:-f[1].geometry.height-10)*m;var p=t.getOutgoingEdges(t.model.getTerminal(e[0],
-!0));if(null!=p){for(var q=g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH,u=l=e=0;u<p.length;u++){var x=t.model.getTerminal(p[u],!1);if(g==b(x)){var A=t.view.getState(x);x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,A)&&(e=10+Math.max(e,(Math.min(n.x+n.width,A.x+A.width)-Math.max(n.x,A.x))/m),l=10+Math.max(l,(Math.min(n.y+n.height,A.y+A.height)-Math.max(n.y,A.y))/m))}}q?l=0:e=0;for(u=0;u<p.length;u++)if(x=t.model.getTerminal(p[u],
-!1),g==b(x)&&(A=t.view.getState(x),x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY()))){var v=[];t.traverse(A.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});t.moveCells(v,(c?1:-1)*e,(c?1:-1)*l)}}}return t.addCells(f,d)}finally{t.model.endUpdate()}}function g(a){t.model.beginUpdate();try{var c=b(a),d=t.getIncomingEdges(a),e=t.cloneCells([d[0],a]);t.model.setTerminal(d[0],e[1],!1);t.model.setTerminal(e[0],e[1],!0);t.model.setTerminal(e[0],a,!1);
-var f=t.model.getParent(a),g=f.geometry,l=[];t.view.currentRoot!=f&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);t.traverse(a,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});var k=a.geometry.width+40,m=a.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?k=0:c==mxConstants.DIRECTION_NORTH?(k=0,m=-m):c==mxConstants.DIRECTION_WEST?(k=-k,m=0):c==mxConstants.DIRECTION_EAST&&(m=0);t.moveCells(l,k,m);return t.addCells(e,f)}finally{t.model.endUpdate()}}function p(a,c){t.model.beginUpdate();try{var d=
-t.model.getParent(a),e=t.getIncomingEdges(a),f=b(a);0==e.length&&(e=[t.createEdge(d,null,"",null,null,t.createCurrentEdgeStyle())],f=c);var g=t.cloneCells([e[0],a]);t.model.setTerminal(g[0],a,!0);if(null==t.model.getTerminal(g[0],!1)){t.model.setTerminal(g[0],g[1],!1);var l=t.getCellStyle(g[1]).newEdgeStyle;if(null!=l)try{var k=JSON.parse(l),m;for(m in k)t.setCellStyles(m,k[m],[g[0]]),"edgeStyle"==m&&"elbowEdgeStyle"==k[m]&&t.setCellStyles("elbow",f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NOTH?
-"vertical":"horizontal",[g[0]])}catch(da){}}var e=t.getOutgoingEdges(a),n=d.geometry,l=[];t.view.currentRoot==d&&(n=new mxRectangle);for(k=0;k<e.length;k++){var p=t.model.getTerminal(e[k],!1);null!=p&&l.push(p)}var q=t.view.getBounds(l),u=t.view.translate,x=t.view.scale;f==mxConstants.DIRECTION_SOUTH?(g[1].geometry.x=null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-u.x-n.x+10,g[1].geometry.y+=g[1].geometry.height-n.y+40):f==mxConstants.DIRECTION_NORTH?(g[1].geometry.x=
-null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-u.x+-n.x+10,g[1].geometry.y-=g[1].geometry.height+n.y+40):(g[1].geometry.x=f==mxConstants.DIRECTION_WEST?g[1].geometry.x-(g[1].geometry.width+n.x+40):g[1].geometry.x+(g[1].geometry.width-n.x+40),g[1].geometry.y=null==q?a.geometry.y+(a.geometry.height-g[1].geometry.height)/2:(q.y+q.height)/x-u.y+-n.y+10);return t.addCells(g,d)}finally{t.model.endUpdate()}}function m(a,b,c){a=t.getOutgoingEdges(a);c=t.view.getState(c);var d=
-[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=t.view.getState(t.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function n(a,c){var d=b(a),e=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==e&&d!=c?v.actions.get("selectParent").funct():
-d==c?(e=t.getOutgoingEdges(a),null!=e&&0<e.length&&t.setSelectionCell(t.model.getTerminal(e[0],!1))):(d=t.getIncomingEdges(a),null!=d&&0<d.length&&(e=m(t.model.getTerminal(d[0],!0),e,a),d=t.view.getState(a),null!=d&&(d=mxUtils.indexOf(e,d),0<=d&&(d+=c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=e.length-1&&t.setSelectionCell(e[d].cell)))))}var v=this,t=v.editor.graph,x=t.getModel(),y=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){y.apply(this,arguments);
-if(1==t.getSelectionCount()){c=t.getSelectionCell();var e=t.getOutgoingEdges(c);b.addSeparator();0<e.length&&(a(t.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(t.getSelectionCell())&&(b.addSeparator(),0<t.getIncomingEdges(c).length&&this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getOutgoingEdges(a);
-if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=t.getOutgoingEdges(t.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",
-function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);null!=a&&0<a.length&&t.setSelectionCell(t.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),b=[];t.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});t.setSelectionCells(b)}},null,null,"Alt+Shift+D");var E=t.removeCells;t.removeCells=function(b,c){c=null!=
-c?c:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));c&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var d=[],e=0;e<b.length;e++){var g=b[e];x.isEdge(g)&&f(g)&&(d.push(g),g=x.getTerminal(g,!1));if(a(g)){var l=[];t.traverse(g,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});0<l.length&&(d=d.concat(l),g=t.getIncomingEdges(b[e]),b=b.concat(g))}else null!=g&&d.push(b[e])}b=d;return E.apply(this,arguments)};v.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,
-d))};var z=t.duplicateCells;t.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=t.view.getState(d[e]);if(null!=f&&a(f.cell))for(var g=t.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var l=z.call(this,b,c);if(l.length==b.length)for(e=0;e<b.length;e++)if(a(b[e])){var k=t.getIncomingEdges(l[e]),g=t.getIncomingEdges(b[e]);if(0==k.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,
-t.getDefaultParent(),this.model.getTerminal(g[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var C=t.moveCells;t.moveCells=function(b,c,d,e,f,g,l){var k=null;this.model.beginUpdate();try{var m=f,n=this.getCurrentCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var p=0;p<b.length;p++)if(a(b[p])||t.model.isEdge(b[p])&&null==t.model.getTerminal(b[p],!0)){f=t.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var q=t.getIncomingEdges(b[0]);
-if(0<q.length){var u=t.view.getState(t.model.getTerminal(q[0],!0));if(null!=u){var x=t.view.getState(m);null!=x&&(c=(x.getCenterX()-u.getCenterX())/t.view.scale,d=(x.getCenterY()-u.getCenterY())/t.view.scale)}}}}k=C.apply(this,arguments);if(null!=k&&null!=b&&k.length==b.length)for(p=0;p<k.length;p++)if(this.model.isEdge(k[p]))a(m)&&0>mxUtils.indexOf(k,this.model.getTerminal(k[p],!0))&&this.model.setTerminal(k[p],m,!0);else if(a(b[p])&&(q=t.getIncomingEdges(b[p]),0<q.length))if(!e)a(m)&&0>mxUtils.indexOf(b,
-this.model.getTerminal(q[0],!0))&&this.model.setTerminal(q[0],m,!0);else if(0==t.getIncomingEdges(k[p]).length){n=m;if(null==n||n==t.model.getParent(b[p]))n=t.model.getTerminal(q[0],!0);e=this.cloneCell(q[0]);this.addEdge(e,t.getDefaultParent(),n,k[p])}}finally{this.model.endUpdate()}return k};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(b,c,d,e){var f=t.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var l=0;l<g.length;l++)if(f.isEdge(g[l])&&
-null==f.getTerminal(g[l],!0)){f.setTerminal(g[l],b,!0);var k=t.getCellGeometry(g[l]);k.points=null;null!=k.getTerminalPoint(!0)&&k.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var D={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},G=v.onKeyDown;v.onKeyDown=function(b){try{if(t.isEnabled()&&!t.isEditing()&&a(t.getSelectionCell())&&1==t.getSelectionCount()){var c=null;0<t.getIncomingEdges(t.getSelectionCell()).length&&
-(9==b.which?c=mxEvent.isShiftDown(b)?g(t.getSelectionCell()):p(t.getSelectionCell()):13==b.which&&(c=e(t.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&t.model.isEdge(c[0])?t.setSelectionCell(t.model.getTerminal(c[0],!1)):t.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var d=D[b.keyCode];
-null!=d&&(d.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(n(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(n(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(b)):39==b.keyCode?(n(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(n(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(b))}}catch(H){v.handleError(H)}mxEvent.isConsumed(b)||G.apply(this,arguments)};var F=t.connectVertex;t.connectVertex=
-function(c,d,f,l,k,m,n){var q=t.getIncomingEdges(c);if(a(c)){var u=b(c),x=u==mxConstants.DIRECTION_EAST||u==mxConstants.DIRECTION_WEST,A=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return u==d||0==q.length?p(c,d):x==A?g(c):e(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return F.apply(this,arguments)};t.getSubtree=function(b){var d=[b];!c(b)&&!a(b)||q(b)||t.traverse(b,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);
+l[k]||!this.model.isCollapsed(a)})),this.model.setCollapsed(l[k],c))}for(k=0;k<g.length;k++)this.model.setVisible(g[k],!c);l=d;l=a.apply(this,arguments)}finally{this.model.endUpdate()}return l};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return x.isVertex(a)&&f(a)}function c(a){var b=!1;null!=a&&(b="1"==u.getCurrentCellStyle(a).treeMoving);
+return b}function f(a){var b=!1;null!=a&&(a=x.getParent(a),b=u.view.getState(a),b="tree"==(null!=b?b.style:u.getCellStyle(a)).containerType);return b}function q(a){var b=!1;null!=a&&(a=x.getParent(a),b=u.view.getState(a),u.view.getState(a),b=null!=(null!=b?b.style:u.getCellStyle(a)).childLayout);return b}function b(a){a=u.view.getState(a);if(null!=a){var b=u.getIncomingEdges(a.cell);if(0<b.length&&(b=u.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
+a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function e(a,c){c=null!=c?c:!0;u.model.beginUpdate();try{var d=u.model.getParent(a),e=u.getIncomingEdges(a),f=u.cloneCells([e[0],a]);u.model.setTerminal(f[0],u.model.getTerminal(e[0],!0),!0);var g=b(a),l=d.geometry;g==mxConstants.DIRECTION_SOUTH||
+g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=c?a.geometry.width+10:-f[1].geometry.width-10:f[1].geometry.y+=c?a.geometry.height+10:-f[1].geometry.height-10;u.view.currentRoot!=d&&(f[1].geometry.x-=l.x,f[1].geometry.y-=l.y);var k=u.view.getState(a),m=u.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(c?a.geometry.width+10:-f[1].geometry.width-10)*m:n.y+=(c?a.geometry.height+10:-f[1].geometry.height-10)*m;var p=u.getOutgoingEdges(u.model.getTerminal(e[0],
+!0));if(null!=p){for(var q=g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH,t=l=e=0;t<p.length;t++){var x=u.model.getTerminal(p[t],!1);if(g==b(x)){var A=u.view.getState(x);x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,A)&&(e=10+Math.max(e,(Math.min(n.x+n.width,A.x+A.width)-Math.max(n.x,A.x))/m),l=10+Math.max(l,(Math.min(n.y+n.height,A.y+A.height)-Math.max(n.y,A.y))/m))}}q?l=0:e=0;for(t=0;t<p.length;t++)if(x=u.model.getTerminal(p[t],
+!1),g==b(x)&&(A=u.view.getState(x),x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY()))){var B=[];u.traverse(A.cell,!0,function(a,b){null!=b&&B.push(b);B.push(a);return!0});u.moveCells(B,(c?1:-1)*e,(c?1:-1)*l)}}}return u.addCells(f,d)}finally{u.model.endUpdate()}}function g(a){u.model.beginUpdate();try{var c=b(a),d=u.getIncomingEdges(a),e=u.cloneCells([d[0],a]);u.model.setTerminal(d[0],e[1],!1);u.model.setTerminal(e[0],e[1],!0);u.model.setTerminal(e[0],a,!1);
+var f=u.model.getParent(a),g=f.geometry,l=[];u.view.currentRoot!=f&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);u.traverse(a,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});var k=a.geometry.width+40,m=a.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?k=0:c==mxConstants.DIRECTION_NORTH?(k=0,m=-m):c==mxConstants.DIRECTION_WEST?(k=-k,m=0):c==mxConstants.DIRECTION_EAST&&(m=0);u.moveCells(l,k,m);return u.addCells(e,f)}finally{u.model.endUpdate()}}function p(a,c){u.model.beginUpdate();try{var d=
+u.model.getParent(a),e=u.getIncomingEdges(a),f=b(a);0==e.length&&(e=[u.createEdge(d,null,"",null,null,u.createCurrentEdgeStyle())],f=c);var g=u.cloneCells([e[0],a]);u.model.setTerminal(g[0],a,!0);if(null==u.model.getTerminal(g[0],!1)){u.model.setTerminal(g[0],g[1],!1);var l=u.getCellStyle(g[1]).newEdgeStyle;if(null!=l)try{var k=JSON.parse(l),m;for(m in k)u.setCellStyles(m,k[m],[g[0]]),"edgeStyle"==m&&"elbowEdgeStyle"==k[m]&&u.setCellStyles("elbow",f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NOTH?
+"vertical":"horizontal",[g[0]])}catch(da){}}var e=u.getOutgoingEdges(a),n=d.geometry,l=[];u.view.currentRoot==d&&(n=new mxRectangle);for(k=0;k<e.length;k++){var p=u.model.getTerminal(e[k],!1);null!=p&&l.push(p)}var q=u.view.getBounds(l),t=u.view.translate,x=u.view.scale;f==mxConstants.DIRECTION_SOUTH?(g[1].geometry.x=null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-t.x-n.x+10,g[1].geometry.y+=g[1].geometry.height-n.y+40):f==mxConstants.DIRECTION_NORTH?(g[1].geometry.x=
+null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-t.x+-n.x+10,g[1].geometry.y-=g[1].geometry.height+n.y+40):(g[1].geometry.x=f==mxConstants.DIRECTION_WEST?g[1].geometry.x-(g[1].geometry.width+n.x+40):g[1].geometry.x+(g[1].geometry.width-n.x+40),g[1].geometry.y=null==q?a.geometry.y+(a.geometry.height-g[1].geometry.height)/2:(q.y+q.height)/x-t.y+-n.y+10);return u.addCells(g,d)}finally{u.model.endUpdate()}}function m(a,b,c){a=u.getOutgoingEdges(a);c=u.view.getState(c);var d=
+[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=u.view.getState(u.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function n(a,c){var d=b(a),e=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==e&&d!=c?v.actions.get("selectParent").funct():
+d==c?(e=u.getOutgoingEdges(a),null!=e&&0<e.length&&u.setSelectionCell(u.model.getTerminal(e[0],!1))):(d=u.getIncomingEdges(a),null!=d&&0<d.length&&(e=m(u.model.getTerminal(d[0],!0),e,a),d=u.view.getState(a),null!=d&&(d=mxUtils.indexOf(e,d),0<=d&&(d+=c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=e.length-1&&u.setSelectionCell(e[d].cell)))))}var v=this,u=v.editor.graph,x=u.getModel(),y=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){y.apply(this,arguments);
+if(1==u.getSelectionCount()){c=u.getSelectionCell();var e=u.getOutgoingEdges(c);b.addSeparator();0<e.length&&(a(u.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(u.getSelectionCell())&&(b.addSeparator(),0<u.getIncomingEdges(c).length&&this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getOutgoingEdges(a);
+if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(u.model.getTerminal(a[c],!1));u.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=u.getOutgoingEdges(u.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(u.model.getTerminal(a[c],!1));u.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",
+function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getIncomingEdges(a);null!=a&&0<a.length&&u.setSelectionCell(u.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),b=[];u.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});u.setSelectionCells(b)}},null,null,"Alt+Shift+D");var E=u.removeCells;u.removeCells=function(b,c){c=null!=
+c?c:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));c&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var d=[],e=0;e<b.length;e++){var g=b[e];x.isEdge(g)&&f(g)&&(d.push(g),g=x.getTerminal(g,!1));if(a(g)){var l=[];u.traverse(g,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});0<l.length&&(d=d.concat(l),g=u.getIncomingEdges(b[e]),b=b.concat(g))}else null!=g&&d.push(b[e])}b=d;return E.apply(this,arguments)};v.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,
+d))};var z=u.duplicateCells;u.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=u.view.getState(d[e]);if(null!=f&&a(f.cell))for(var g=u.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var l=z.call(this,b,c);if(l.length==b.length)for(e=0;e<b.length;e++)if(a(b[e])){var k=u.getIncomingEdges(l[e]),g=u.getIncomingEdges(b[e]);if(0==k.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,
+u.getDefaultParent(),this.model.getTerminal(g[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var C=u.moveCells;u.moveCells=function(b,c,d,e,f,g,l){var k=null;this.model.beginUpdate();try{var m=f,n=this.getCurrentCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var p=0;p<b.length;p++)if(a(b[p])||u.model.isEdge(b[p])&&null==u.model.getTerminal(b[p],!0)){f=u.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var q=u.getIncomingEdges(b[0]);
+if(0<q.length){var t=u.view.getState(u.model.getTerminal(q[0],!0));if(null!=t){var x=u.view.getState(m);null!=x&&(c=(x.getCenterX()-t.getCenterX())/u.view.scale,d=(x.getCenterY()-t.getCenterY())/u.view.scale)}}}}k=C.apply(this,arguments);if(null!=k&&null!=b&&k.length==b.length)for(p=0;p<k.length;p++)if(this.model.isEdge(k[p]))a(m)&&0>mxUtils.indexOf(k,this.model.getTerminal(k[p],!0))&&this.model.setTerminal(k[p],m,!0);else if(a(b[p])&&(q=u.getIncomingEdges(b[p]),0<q.length))if(!e)a(m)&&0>mxUtils.indexOf(b,
+this.model.getTerminal(q[0],!0))&&this.model.setTerminal(q[0],m,!0);else if(0==u.getIncomingEdges(k[p]).length){n=m;if(null==n||n==u.model.getParent(b[p]))n=u.model.getTerminal(q[0],!0);e=this.cloneCell(q[0]);this.addEdge(e,u.getDefaultParent(),n,k[p])}}finally{this.model.endUpdate()}return k};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(b,c,d,e){var f=u.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var l=0;l<g.length;l++)if(f.isEdge(g[l])&&
+null==f.getTerminal(g[l],!0)){f.setTerminal(g[l],b,!0);var k=u.getCellGeometry(g[l]);k.points=null;null!=k.getTerminalPoint(!0)&&k.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var D={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},G=v.onKeyDown;v.onKeyDown=function(b){try{if(u.isEnabled()&&!u.isEditing()&&a(u.getSelectionCell())&&1==u.getSelectionCount()){var c=null;0<u.getIncomingEdges(u.getSelectionCell()).length&&
+(9==b.which?c=mxEvent.isShiftDown(b)?g(u.getSelectionCell()):p(u.getSelectionCell()):13==b.which&&(c=e(u.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&u.model.isEdge(c[0])?u.setSelectionCell(u.model.getTerminal(c[0],!1)):u.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(u.view.getState(u.getSelectionCell())),u.startEditingAtCell(u.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var d=D[b.keyCode];
+null!=d&&(d.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(n(u.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(n(u.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(b)):39==b.keyCode?(n(u.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(n(u.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(b))}}catch(H){v.handleError(H)}mxEvent.isConsumed(b)||G.apply(this,arguments)};var F=u.connectVertex;u.connectVertex=
+function(c,d,f,l,k,m,n){var q=u.getIncomingEdges(c);if(a(c)){var t=b(c),x=t==mxConstants.DIRECTION_EAST||t==mxConstants.DIRECTION_WEST,A=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return t==d||0==q.length?p(c,d):x==A?g(c):e(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return F.apply(this,arguments)};u.getSubtree=function(b){var d=[b];!c(b)&&!a(b)||q(b)||u.traverse(b,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);
return!0});return d};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);(c(this.state.cell)||a(this.state.cell))&&!q(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",
this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(a)})))};var J=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=
-function(){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var u=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){u.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var K=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=
+function(){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var t=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){t.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var K=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=
function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var f=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=f.apply(this,arguments),c=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=
!0;var c=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.vertex=!0;var b=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');b.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
d.geometry.relative=!0;d.edge=!0;c.insertEdge(d,!0);b.insertEdge(d,!1);a.insert(d);a.insert(c);a.insert(b);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
c.vertex=!0;var b=new mxCell("Topic",new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');b.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;
c.insertEdge(d,!0);b.insertEdge(d,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');f.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
k.geometry.relative=!0;k.edge=!0;c.insertEdge(k,!0);f.insertEdge(k,!1);var m=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');m.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
-n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);m.insertEdge(n,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');v.vertex=!0;var t=new mxCell("",new mxGeometry(0,
-0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");t.geometry.relative=!0;t.edge=!0;c.insertEdge(t,!0);v.insertEdge(t,!1);a.insert(d);a.insert(k);a.insert(n);a.insert(t);a.insert(c);a.insert(b);a.insert(f);a.insert(m);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
+n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);m.insertEdge(n,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');v.vertex=!0;var u=new mxCell("",new mxGeometry(0,
+0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");u.geometry.relative=!0;u.edge=!0;c.insertEdge(u,!0);v.insertEdge(u,!1);a.insert(d);a.insert(k);a.insert(n);a.insert(u);a.insert(c);a.insert(b);a.insert(f);a.insert(m);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
a.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;a.insertEdge(c,!1);return sb.createVertexTemplateFromCells([a,c],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
a.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;a.insertEdge(c,!1);return sb.createVertexTemplateFromCells([a,c],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),'swimlane;html=1;startSize=20;horizontal=1;containerType=tree;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
@@ -3780,7 +3784,7 @@ b.menus.addMenuItems(a,["-","revisionHistory"],c)})));var e=this.get("exportAs")
b.menus.addSubmenu("theme",a,c);null!=f&&b.menus.addSubmenu("language",a,c);b.menus.addSubmenu("units",a,c);a.addSeparator(c);b.menus.addMenuItems(a,["scrollbars","tooltips","ruler"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&b.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],c);!b.isOfflineApp()&&isLocalStorage&&b.menus.addMenuItem(a,"plugins",c);a.addSeparator(c);b.menus.addMenuItem(a,"drawConfig",c);a.addSeparator(c)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,
function(a,c){b.menus.addMenuItems(a,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),c)})));mxUtils.bind(this,function(){var a=this.get("insert"),c=a.funct;a.funct=function(a,d){c.apply(this,arguments);b.menus.addSubmenu("table",a,d);a.addSeparator(d);b.menus.addMenuItems(a,["-","toggleShapes"],d)}})();var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),l=function(a,c,d,e){a.addItem(d,null,mxUtils.bind(this,
function(){var a=new CreateGraphDialog(b,d,e);b.showDialog(a.container,620,420,!0,!1);a.init()}),c)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):l(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"grid guides ruler - connectionArrows connectionPoints -".split(" "),c);if("undefined"!==typeof MathJax){var d=b.menus.addMenuItem(a,"mathematicalTypesetting",
-c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],c)})))};var t=EditorUi.prototype.init;EditorUi.prototype.init=function(){function b(a,b,c){var d=k.menus.get(a),e=q.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),p);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";e.style.top="6px";e.style.marginRight="6px";e.style.height=
+c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],c)})))};var u=EditorUi.prototype.init;EditorUi.prototype.init=function(){function b(a,b,c){var d=k.menus.get(a),e=q.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),p);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";e.style.top="6px";e.style.marginRight="6px";e.style.height=
"30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));k.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition="right 6px center",e.style.backgroundRepeat=
"no-repeat",e.style.paddingRight="22px");return e}function d(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=k.statusContainer?n.insertBefore(g,k.statusContainer):n.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition="center center",g.style.backgroundRepeat=
"no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor="pointer"):(g.setAttribute("disabled",
@@ -3794,16 +3798,16 @@ e([d("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.tra
640<=f?d("",a.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",a,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
null,640<=f?d("",c.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
null],60)}a=k.menus.get("language");null!=a&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==O&&(c=q.addMenu("",a.funct),c.setAttribute("title",mxResources.get("language")),c.className="geToolbarButton",c.style.backgroundImage="url("+Editor.globeImage+")",c.style.backgroundPosition="center center",c.style.backgroundRepeat="no-repeat",c.style.backgroundSize="24px 24px",c.style.position="absolute",c.style.height="24px",c.style.width="24px",c.style.zIndex="1",c.style.right="8px",c.style.cursor=
-"pointer",c.style.top="1"==urlParams.embed?"12px":"11px",n.appendChild(c),O=c),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}t.apply(this,arguments);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);(1E3<=f||null!=urlParams.clibs||
+"pointer",c.style.top="1"==urlParams.embed?"12px":"11px",n.appendChild(c),O=c),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}u.apply(this,arguments);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);(1E3<=f||null!=urlParams.clibs||
null!=urlParams.libs)&&c(this,!0);1E3<=f&&a(this,!0);var k=this,m=k.editor.graph;k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var n=document.createElement("div");n.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var p=null,q=new Menubar(k,n);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position=
"relative";k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop="7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var v=k.descriptorChanged;k.descriptorChanged=function(){v.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==
b?b="gitHub":"gitlab"==b?b="gitLab":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);n.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else n.removeAttribute("title")};k.setStatusText(k.editor.getStatus());n.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";n.appendChild(k.buttonContainer);k.menubarContainer=
-k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var l=k.diagramContainer.parentNode,u=document.createElement("div");u.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var K=
+k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var l=k.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var K=
k.menus.get("viewZoom");if(null!=K){this.tabContainer.style.right="70px";var B=q.addMenu("100%",K.funct);B.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");B.style.whiteSpace="nowrap";B.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";B.style.backgroundPosition="right 6px center";B.style.backgroundRepeat="no-repeat";B.style.backgroundColor="#ffffff";B.style.paddingRight="10px";B.style.display="block";B.style.position="absolute";B.style.textDecoration="none";B.style.textDecoration=
-"none";B.style.right="0px";B.style.bottom="0px";B.style.overflow="hidden";B.style.visibility="hidden";B.style.textAlign="center";B.style.color="#000";B.style.fontSize="12px";B.style.color="#707070";B.style.width="59px";B.style.cursor="pointer";B.style.borderTop="1px solid lightgray";B.style.borderLeft="1px solid lightgray";B.style.height=parseInt(k.tabContainerHeight)-1+"px";B.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";u.appendChild(B);K=mxUtils.bind(this,function(){B.innerHTML=Math.round(100*
-k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,K);k.editor.addListener("resetGraphView",K);k.editor.addListener("pageSelected",K);var L=k.setGraphEnabled;k.setGraphEnabled=function(){L.apply(this,arguments);null!=this.tabContainer&&(B.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}u.appendChild(k.tabContainer);u.appendChild(n);u.appendChild(k.diagramContainer);
-l.appendChild(u);k.updateTabContainer();var O=null;g();mxEvent.addListener(window,"resize",function(){g();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
-(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,c,f,d,k,l,q){this.file=a;this.id=c;this.content=f;this.modifiedDate=d;this.createdDate=k;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,f,d,k){c()};DrawioComment.prototype.editComment=function(a,c,f){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DrawioUser=function(a,c,f,d,k){this.id=a;this.email=c;this.displayName=f;this.pictureUrl=d;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished.\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully.\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed.\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first.\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list.\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+"none";B.style.right="0px";B.style.bottom="0px";B.style.overflow="hidden";B.style.visibility="hidden";B.style.textAlign="center";B.style.color="#000";B.style.fontSize="12px";B.style.color="#707070";B.style.width="59px";B.style.cursor="pointer";B.style.borderTop="1px solid lightgray";B.style.borderLeft="1px solid lightgray";B.style.height=parseInt(k.tabContainerHeight)-1+"px";B.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";t.appendChild(B);K=mxUtils.bind(this,function(){B.innerHTML=Math.round(100*
+k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,K);k.editor.addListener("resetGraphView",K);k.editor.addListener("pageSelected",K);var L=k.setGraphEnabled;k.setGraphEnabled=function(){L.apply(this,arguments);null!=this.tabContainer&&(B.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}t.appendChild(k.tabContainer);t.appendChild(n);t.appendChild(k.diagramContainer);
+l.appendChild(t);k.updateTabContainer();var O=null;g();mxEvent.addListener(window,"resize",function(){g();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,c,f,d,k,l,q){this.file=a;this.id=c;this.content=f;this.modifiedDate=d;this.createdDate=k;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,f,d,k){c()};DrawioComment.prototype.editComment=function(a,c,f){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DrawioUser=function(a,c,f,d,k){this.id=a;this.email=c;this.displayName=f;this.pictureUrl=d;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished.\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully.\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed.\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first.\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list.\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#2a2a2a"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,c,f){this.init(a,c,f)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://app.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.center=!1;
GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;
GraphViewer.prototype.init=function(a,c,f){this.graphConfig=null!=f?f:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.center=null!=this.graphConfig.center?this.graphConfig.center:this.center;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=
@@ -3835,13 +3839,13 @@ function(){e.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),e.style.cur
f.style.whiteSpace="nowrap";f.style.textAlign="left";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,k=null,l=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this,
function(){mxUtils.setOpacity(f,0);d=null;k=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";k=null}),100)}),a||200)}),q=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(q(30),l())}));mxEvent.addListener(f,mxClient.IS_POINTER?
"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){q(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){q(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var b=this.graph,e=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();
-this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<e&&Math.abs(this.scrollTop-b.container.scrollTop)<e&&Math.abs(this.startX-c.getGraphX())<e&&Math.abs(this.startY-c.getGraphY())<e&&(0<parseFloat(f.style.opacity||0)?l():q(30))}})}for(var g=this.toolbarItems,p=0,m=null,n=null,v=0;v<g.length;v++){var t=g[v];if("pages"==t){n=c.ownerDocument.createElement("div");
+this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<e&&Math.abs(this.scrollTop-b.container.scrollTop)<e&&Math.abs(this.startX-c.getGraphX())<e&&Math.abs(this.startY-c.getGraphY())<e&&(0<parseFloat(f.style.opacity||0)?l():q(30))}})}for(var g=this.toolbarItems,p=0,m=null,n=null,v=0;v<g.length;v++){var u=g[v];if("pages"==u){n=c.ownerDocument.createElement("div");
n.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(n,70);var x=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");x.style.borderRightStyle="none";x.style.paddingLeft="0px";x.style.paddingRight="0px";f.appendChild(n);var y=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
-1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");y.style.paddingLeft="0px";y.style.paddingRight="0px";t=mxUtils.bind(this,function(){n.innerHTML="";mxUtils.write(n,this.currentPage+1+" / "+this.diagrams.length);n.style.display=1<this.diagrams.length?"inline-block":"none";x.style.display=n.style.display;y.style.display=n.style.display});this.addListener("graphChanged",t);t()}else if("zoom"==t)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
-mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==t){if(this.layersEnabled){var E=this.graph.getModel(),z=a(mxUtils.bind(this,function(a){if(null!=m)m.parentNode.removeChild(m),
+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");y.style.paddingLeft="0px";y.style.paddingRight="0px";u=mxUtils.bind(this,function(){n.innerHTML="";mxUtils.write(n,this.currentPage+1+" / "+this.diagrams.length);n.style.display=1<this.diagrams.length?"inline-block":"none";x.style.display=n.style.display;y.style.display=n.style.display});this.addListener("graphChanged",u);u()}else if("zoom"==u)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
+mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==u){if(this.layersEnabled){var E=this.graph.getModel(),z=a(mxUtils.bind(this,function(a){if(null!=m)m.parentNode.removeChild(m),
m=null;else{m=this.graph.createLayersDialog();mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});a=z.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";m.style.fontSize="11px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var b=mxUtils.getDocumentScrollOrigin(document);m.style.left=b.x+a.left+
-"px";m.style.top=b.y+a.bottom+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");E.addListener(mxEvent.CHANGE,function(){z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"});z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"}}else"lightbox"==t?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(t=this.graphConfig["toolbar-buttons"][t],
-null!=t&&a(null==t.enabled||t.enabled?t.handler:function(){},t.image,t.title,t.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*p);null!=this.graphConfig.title&&(g=c.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,
+"px";m.style.top=b.y+a.bottom+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");E.addListener(mxEvent.CHANGE,function(){z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"});z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"}}else"lightbox"==u?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(u=this.graphConfig["toolbar-buttons"][u],
+null!=u&&a(null==u.enabled||u.enabled?u.handler:function(){},u.image,u.title,u.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*p);null!=this.graphConfig.title&&(g=c.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,
70),f.appendChild(g),this.filename=g);this.minToolbarWidth=34*p;var C=c.style.border,g=mxUtils.bind(this,function(){f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";f.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=c.getBoundingClientRect(),b=mxUtils.getScrollOrigin(document.body),b="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-b.x,top:-b.y},a={left:a.left-
b.left,top:a.top-b.top,bottom:a.bottom-b.top,right:a.right-b.left};f.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==C&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){null!=f.parentNode&&f.parentNode.removeChild(f);null!=m&&(m.parentNode.removeChild(m),
m=null);c.style.border=C});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==c||a==f||a==m)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else f.style.top=-this.toolbarHeight+"px",c.appendChild(f)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",g):g()};
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 084de727..6b84bc48 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -2149,8 +2149,8 @@ Editor.prototype.setFilename=function(a){this.filename=a};
Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,f){c.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(d,c){var f=a.getSelectionCellsForChanges(c.getProperty("edit").changes,function(a){return!(a instanceof mxChildChange)});if(0<f.length){a.getModel();for(var k=[],b=0;b<
f.length;b++)null!=a.view.getState(f[b])&&k.push(f[b]);a.setSelectionCells(k)}};c.addListener(mxEvent.UNDO,f);c.addListener(mxEvent.REDO,f);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)};
-function Dialog(a,c,f,d,k,l,q,b,e,g,p){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);f+=m;d+=m;var n=f,v=d,t=mxUtils.getDocumentSize();null!=window.innerHeight&&(t.height=window.innerHeight);var x=t.height,y=Math.max(1,Math.round((t.width-f-64)/2)),E=Math.max(1,Math.round((x-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,x-64);0<a.dialogs.length&&(this.zIndex+=
-2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=x+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));t=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=t.x+"px";this.bg.style.top=t.y+"px";y+=t.x;E+=t.y;k&&document.body.appendChild(this.bg);var z=a.createDiv(e?"geTransDialog":
+function Dialog(a,c,f,d,k,l,q,b,e,g,p){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);f+=m;d+=m;var n=f,v=d,u=mxUtils.getDocumentSize();null!=window.innerHeight&&(u.height=window.innerHeight);var x=u.height,y=Math.max(1,Math.round((u.width-f-64)/2)),E=Math.max(1,Math.round((x-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,x-64);0<a.dialogs.length&&(this.zIndex+=
+2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=x+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";y+=u.x;E+=u.y;k&&document.body.appendChild(this.bg);var z=a.createDiv(e?"geTransDialog":
"geDialog");k=this.getPosition(y,E,f,d);y=k.x;E=k.y;z.style.width=f+"px";z.style.height=d+"px";z.style.left=y+"px";z.style.top=E+"px";z.style.zIndex=this.zIndex;z.appendChild(c);document.body.appendChild(z);!b&&c.clientHeight>z.clientHeight-64&&(c.style.overflowY="auto");if(l&&(l=document.createElement("img"),l.setAttribute("src",Dialog.prototype.closeImage),l.setAttribute("title",mxResources.get("close")),l.className="geDialogClose",l.style.top=E+14+"px",l.style.left=y+f+38-m+"px",l.style.zIndex=
this.zIndex,mxEvent.addListener(l,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(l),this.dialogImg=l,!p)){var C=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){C=!0}),null,mxUtils.bind(this,function(b){C&&(a.hideDialog(!0),C=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var e=g();null!=e&&(n=f=e.w,v=d=e.h)}e=mxUtils.getDocumentSize();x=e.height;this.bg.style.height=x+"px";y=Math.max(1,Math.round((e.width-f-64)/2));E=Math.max(1,
Math.round((x-d-a.footerHeight)/3));f=null!=document.body?Math.min(n,document.body.scrollWidth-64):n;d=Math.min(v,x-64);e=this.getPosition(y,E,f,d);y=e.x;E=e.y;z.style.left=y+"px";z.style.top=E+"px";z.style.width=f+"px";z.style.height=d+"px";!b&&c.clientHeight>z.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=E+14+"px",this.dialogImg.style.left=y+f+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=
@@ -2180,25 +2180,25 @@ l,q=document.createElement("table");q.style.width="100%";q.style.height="100%";v
l=document.createElement("td");mxUtils.write(l,mxResources.get("background")+":");k.appendChild(l);l=document.createElement("td");l.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="18px";g.style.height="18px";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";var p=d.background;c();mxEvent.addListener(g,"click",function(b){a.pickColor(p||"none",function(a){p=
a;c()});mxEvent.consume(b)});l.appendChild(g);mxUtils.write(l,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=d.getGridSize();l.appendChild(m);mxEvent.addListener(m,"change",function(){var a=parseInt(m.value);m.value=Math.max(1,isNaN(a)?d.getGridSize():a)});k.appendChild(l);b.appendChild(k);k=document.createElement("tr");l=document.createElement("td");mxUtils.write(l,
mxResources.get("image")+":");k.appendChild(l);l=document.createElement("td");var n=document.createElement("a");n.style.textDecoration="underline";n.style.cursor="pointer";n.style.color="#a0a0a0";var v=d.backgroundImage;mxEvent.addListener(n,"click",function(b){a.showBackgroundImageDialog(function(a,b){b||(v=a,f())},v);mxEvent.consume(b)});f();l.appendChild(n);k.appendChild(l);b.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.paddingTop="16px";l.setAttribute("align",
-"right");var t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});t.className="geBtn";a.editor.cancelFirst&&l.appendChild(t);var x=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(m.value);isNaN(b)||d.gridSize===b||d.setGridSize(b);b=new ChangePageSetup(a,p,v,e.get());b.ignoreColor=d.background==p;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=v?v.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==
-b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||d.model.execute(b)});x.className="geBtn gePrimaryBtn";l.appendChild(x);a.editor.cancelFirst||l.appendChild(t);k.appendChild(l);b.appendChild(k);q.appendChild(b);this.container=q};
-PageSetupDialog.addPageFormatPanel=function(a,c,f,d){function k(a,d,c){if(c||m!=document.activeElement&&n!=document.activeElement){a=!1;for(d=0;d<t.length;d++)c=t[d],z?"custom"==c.key&&(b.value=c.key,z=!1):null!=c.format&&("a4"==c.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==c.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==c.format.width&&
+"right");var u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&l.appendChild(u);var x=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(m.value);isNaN(b)||d.gridSize===b||d.setGridSize(b);b=new ChangePageSetup(a,p,v,e.get());b.ignoreColor=d.background==p;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=v?v.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==
+b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||d.model.execute(b)});x.className="geBtn gePrimaryBtn";l.appendChild(x);a.editor.cancelFirst||l.appendChild(u);k.appendChild(l);b.appendChild(k);q.appendChild(b);this.container=q};
+PageSetupDialog.addPageFormatPanel=function(a,c,f,d){function k(a,d,c){if(c||m!=document.activeElement&&n!=document.activeElement){a=!1;for(d=0;d<u.length;d++)c=u[d],z?"custom"==c.key&&(b.value=c.key,z=!1):null!=c.format&&("a4"==c.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==c.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==c.format.width&&
f.height==c.format.height?(b.value=c.key,l.setAttribute("checked","checked"),l.defaultChecked=!0,l.checked=!0,q.removeAttribute("checked"),q.defaultChecked=!1,q.checked=!1,a=!0):f.width==c.format.height&&f.height==c.format.width&&(b.value=c.key,l.removeAttribute("checked"),l.defaultChecked=!1,l.checked=!1,q.setAttribute("checked","checked"),q.defaultChecked=!0,a=q.checked=!0));a?(e.style.display="",p.style.display="none"):(m.value=f.width/100,n.value=f.height/100,l.setAttribute("checked","checked"),
b.value="custom",e.style.display="none",p.style.display="")}}c="format-"+c;var l=document.createElement("input");l.setAttribute("name",c);l.setAttribute("type","radio");l.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",c);q.setAttribute("type","radio");q.setAttribute("value","landscape");var b=document.createElement("select");b.style.marginBottom="8px";b.style.width="202px";var e=document.createElement("div");e.style.marginLeft="4px";e.style.width="210px";
e.style.height="24px";l.style.marginRight="6px";e.appendChild(l);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));e.appendChild(c);q.style.marginLeft="10px";q.style.marginRight="6px";e.appendChild(q);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));e.appendChild(g);var p=document.createElement("div");p.style.marginLeft="4px";p.style.width="210px";p.style.height="24px";var m=document.createElement("input");
-m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";p.appendChild(n);mxUtils.write(p," in");e.style.display="none";p.style.display="none";for(var v={},t=PageSetupDialog.getFormats(),x=0;x<t.length;x++){var y=t[x];v[y.key]=y;var E=document.createElement("option");E.setAttribute("value",y.key);mxUtils.write(E,y.title);b.appendChild(E)}var z=!1;k();a.appendChild(b);mxUtils.br(a);
+m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";p.appendChild(n);mxUtils.write(p," in");e.style.display="none";p.style.display="none";for(var v={},u=PageSetupDialog.getFormats(),x=0;x<u.length;x++){var y=u[x];v[y.key]=y;var E=document.createElement("option");E.setAttribute("value",y.key);mxUtils.write(E,y.title);b.appendChild(E)}var z=!1;k();a.appendChild(b);mxUtils.br(a);
a.appendChild(e);a.appendChild(p);var C=f,A=function(a,c){var g=v[b.value];null!=g.format?(m.value=g.format.width/100,n.value=g.format.height/100,p.style.display="none",e.style.display=""):(e.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=f.width/100;g=parseFloat(n.value);if(isNaN(g)||0>=g)n.value=f.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),Math.floor(100*parseFloat(n.value)));"custom"!=b.value&&q.checked&&(g=new mxRectangle(0,0,
g.height,g.width));c&&z||g.width==C.width&&g.height==C.height||(C=g,null!=d&&d(C))};mxEvent.addListener(c,"click",function(a){l.checked=!0;A(a);mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){q.checked=!0;A(a);mxEvent.consume(a)});mxEvent.addListener(m,"blur",A);mxEvent.addListener(m,"click",A);mxEvent.addListener(n,"blur",A);mxEvent.addListener(n,"click",A);mxEvent.addListener(q,"change",A);mxEvent.addListener(l,"change",A);mxEvent.addListener(b,"change",function(a){z="custom"==b.value;
A(a,!0)});A();return{set:function(a){f=a;k(null,null,!0)},get:function(){return C},widthInput:m,heightInput:n}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,1600,900)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1920,1200)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1600,1200)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(a,c,f,d,k,l,q,b,e,g,p,m){e=null!=e?e:!0;var n,v,t=document.createElement("table"),x=document.createElement("tbody");t.style.marginTop="8px";n=document.createElement("tr");v=document.createElement("td");v.style.whiteSpace="nowrap";v.style.fontSize="10pt";v.style.width=p?"80px":"120px";mxUtils.write(v,(k||mxResources.get("filename"))+":");n.appendChild(v);var y=document.createElement("input");y.setAttribute("value",c||"");y.style.marginLeft="4px";y.style.width=null!=m?m+
-"px":"180px";var E=mxUtils.button(f,function(){if(null==l||l(y.value))e&&a.hideDialog(),d(y.value)});E.className="geBtn gePrimaryBtn";this.init=function(){if(null!=k||null==q)if(y.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?y.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=t.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});
+var FilenameDialog=function(a,c,f,d,k,l,q,b,e,g,p,m){e=null!=e?e:!0;var n,v,u=document.createElement("table"),x=document.createElement("tbody");u.style.marginTop="8px";n=document.createElement("tr");v=document.createElement("td");v.style.whiteSpace="nowrap";v.style.fontSize="10pt";v.style.width=p?"80px":"120px";mxUtils.write(v,(k||mxResources.get("filename"))+":");n.appendChild(v);var y=document.createElement("input");y.setAttribute("value",c||"");y.style.marginLeft="4px";y.style.width=null!=m?m+
+"px":"180px";var E=mxUtils.button(f,function(){if(null==l||l(y.value))e&&a.hideDialog(),d(y.value)});E.className="geBtn gePrimaryBtn";this.init=function(){if(null!=k||null==q)if(y.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?y.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=u.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});
mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=y,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(y.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),E.click());a.stopPropagation();a.preventDefault()}))}}};v=document.createElement("td");
v.style.whiteSpace="nowrap";v.appendChild(y);n.appendChild(v);if(null!=k||null==q)x.appendChild(n),null!=p&&(null!=a.editor.diagramFileTypes&&(n=FilenameDialog.createFileTypes(a,y,a.editor.diagramFileTypes),n.style.marginLeft="6px",n.style.width="74px",v.appendChild(n),y.style.width=null!=m?m-40+"px":"140px"),v.appendChild(FilenameDialog.createTypeHint(a,y,p)));null!=q&&(n=document.createElement("tr"),v=document.createElement("td"),v.colSpan=2,v.appendChild(q),n.appendChild(v),x.appendChild(n));n=
document.createElement("tr");v=document.createElement("td");v.colSpan=2;v.style.paddingTop="20px";v.style.whiteSpace="nowrap";v.setAttribute("align","right");p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});p.className="geBtn";a.editor.cancelFirst&&v.appendChild(p);null!=b&&(m=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(b)}),m.className="geBtn",v.appendChild(m));mxEvent.addListener(y,"keypress",function(a){13==a.keyCode&&E.click()});
-v.appendChild(E);a.editor.cancelFirst||v.appendChild(p);n.appendChild(v);x.appendChild(n);t.appendChild(x);this.container=t};FilenameDialog.filenameHelpLink=null;
+v.appendChild(E);a.editor.cancelFirst||v.appendChild(p);n.appendChild(v);x.appendChild(n);u.appendChild(x);this.container=u};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,c,f){var d=document.createElement("img");d.style.cssText="vertical-align:top;height:16px;width:16px;margin-left:4px;background-repeat:no-repeat;background-position:center bottom;cursor:pointer;";mxUtils.setOpacity(d,70);var k=function(){d.setAttribute("src",Editor.helpImage);d.setAttribute("title",mxResources.get("help"));for(var a=0;a<f.length;a++)if(0<f[a].ext.length&&c.value.toLowerCase().substring(c.value.length-f[a].ext.length-1)=="."+f[a].ext){d.setAttribute("src",
mxClient.imageBasePath+"/warning.png");d.setAttribute("title",mxResources.get(f[a].title));break}};mxEvent.addListener(c,"keyup",k);mxEvent.addListener(c,"change",k);mxEvent.addListener(d,"click",function(c){var f=d.getAttribute("title");d.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=f&&a.showError(null,f,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);
mxEvent.consume(c)});k();return d};
@@ -2211,9 +2211,9 @@ null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackground
d="url("+this.gridImage+")";var f=e=0;null!=a.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),e=1+f.x,f=1+f.y);c=-Math.round(c-mxUtils.mod(this.translate.x*this.scale-e,c))+"px "+-Math.round(c-mxUtils.mod(this.translate.y*this.scale-f,c))+"px"}e=a.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=c,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor=
b,a.container.className="geDiagramContainer geDiagramBackdrop",e.style.backgroundImage="none",e.style.backgroundColor=""):(a.container.className="geDiagramContainer",e.style.backgroundPosition=c,e.style.backgroundColor=b,e.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var e=this.gridSteps*b,d=[],c=1;c<this.gridSteps;c++){var f=c*b;d.push("M 0 "+f+" L "+e+" "+f+" M "+f+" 0 L "+f+" "+e)}return'<svg width="'+
e+'" height="'+e+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+e+'" height="'+e+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+e+" 0 L 0 0 0 "+e+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(d,b){a.apply(this,arguments);if(null!=this.shiftPreview1){var e=
-this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+d,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+b,c))+"px";e.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,e){var d=this.view.scale,c=this.view.translate,f=this.pageFormat,n=d*this.pageScale,l=this.view.getBackgroundPageBounds();b=l.width;e=l.height;var t=
-new mxRectangle(d*c.x,d*c.y,f.width*n,f.height*n),k=(a=a&&Math.min(t.width,t.height)>this.minPageBreakDist)?Math.ceil(e/t.height)-1:0,y=a?Math.ceil(b/t.width)-1:0,q=l.x+b,z=l.y+e;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<y&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?k:y,e=0;e<=b;e++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(l.x),Math.round(l.y+(e+1)*t.height)),
-new mxPoint(Math.round(q),Math.round(l.y+(e+1)*t.height))]:[new mxPoint(Math.round(l.x+(e+1)*t.width),Math.round(l.y)),new mxPoint(Math.round(l.x+(e+1)*t.width),Math.round(z))];null!=a[e]?(a[e].points=d,a[e].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[e]=d)}for(e=b;e<a.length;e++)a[e].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
+this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+d,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+b,c))+"px";e.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,e){var d=this.view.scale,c=this.view.translate,f=this.pageFormat,n=d*this.pageScale,l=this.view.getBackgroundPageBounds();b=l.width;e=l.height;var u=
+new mxRectangle(d*c.x,d*c.y,f.width*n,f.height*n),k=(a=a&&Math.min(u.width,u.height)>this.minPageBreakDist)?Math.ceil(e/u.height)-1:0,y=a?Math.ceil(b/u.width)-1:0,q=l.x+b,z=l.y+e;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<y&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?k:y,e=0;e<=b;e++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(l.x),Math.round(l.y+(e+1)*u.height)),
+new mxPoint(Math.round(q),Math.round(l.y+(e+1)*u.height))]:[new mxPoint(Math.round(l.x+(e+1)*u.width),Math.round(l.y)),new mxPoint(Math.round(l.x+(e+1)*u.width),Math.round(z))];null!=a[e]?(a[e].points=d,a[e].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[e]=d)}for(e=b;e<a.length;e++)a[e].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,b,e){for(var d=0;d<b.length;d++){if(this.graph.isTableCell(b[d])||this.graph.isTableRow(b[d]))return!1;if(this.graph.getModel().isVertex(b[d])){var f=this.graph.getCellGeometry(b[d]);if(null!=f&&f.relative)return!1}}return c.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=f.apply(this,arguments);
a.intersects=mxUtils.bind(this,function(b,e){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,e=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,c=this.graph.pageScale,
f=d.width*c,d=d.height*c,c=Math.floor(Math.min(0,b)/f),n=Math.floor(Math.min(0,e)/d);return new mxRectangle(this.scale*(this.translate.x+c*f),this.scale*(this.translate.y+n*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/f)-c)*f,this.scale*(Math.ceil(Math.max(1,e+a.height/this.scale)/d)-n)*d)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&
@@ -2226,16 +2226,16 @@ k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer
!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(c=d.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=d.graphHandler){var l=d.graphHandler.start;d.graphHandler.start=function(){null!=y.hoverIcons&&y.hoverIcons.reset();l.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-
b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var q=!1,b=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,e){return q||b.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||d.isEditing()?mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(q=!0,this.hoverIcons.reset(),
d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";q=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var e=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return e.apply(this,arguments)||q||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&
-(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var g=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return g.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var p=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return q||p.apply(this,arguments)};var m=!1,n=null,v=null,t=null,x=
-mxUtils.bind(this,function(){if(null!=this.toolbar&&m!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==t)this.toolbar.createTextToolbar();else{for(var c=0;c<t.length;c++)this.toolbar.container.appendChild(t[c]);this.toolbar.fontMenu=n;this.toolbar.sizeMenu=v}m=d.cellEditor.isContentEditing();
-n=a;v=e;t=b}}),y=this,E=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){E.apply(this,arguments);x();if(d.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){for(var b=d.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;if(null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=y.toolbar)){var e=b.fontFamily;"'"==e.charAt(0)&&(e=e.substring(1));"'"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1));y.toolbar.setFontName(e);
+(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var g=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return g.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var p=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return q||p.apply(this,arguments)};var m=!1,n=null,v=null,u=null,x=
+mxUtils.bind(this,function(){if(null!=this.toolbar&&m!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==u)this.toolbar.createTextToolbar();else{for(var c=0;c<u.length;c++)this.toolbar.container.appendChild(u[c]);this.toolbar.fontMenu=n;this.toolbar.sizeMenu=v}m=d.cellEditor.isContentEditing();
+n=a;v=e;u=b}}),y=this,E=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){E.apply(this,arguments);x();if(d.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){for(var b=d.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;if(null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=y.toolbar)){var e=b.fontFamily;"'"==e.charAt(0)&&(e=e.substring(1));"'"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1));y.toolbar.setFontName(e);
y.toolbar.setFontSize(parseInt(b.fontSize))}a=!1},0))};mxEvent.addListener(d.cellEditor.textarea,"input",b);mxEvent.addListener(d.cellEditor.textarea,"touchend",b);mxEvent.addListener(d.cellEditor.textarea,"mouseup",b);mxEvent.addListener(d.cellEditor.textarea,"keyup",b);b()}};var z=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,b){try{z.apply(this,arguments),x()}catch(B){y.handleError(B)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===
-window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(u){}var C=d.fireMouseEvent;d.fireMouseEvent=function(a,b,e){a==mxEvent.MOUSE_DOWN&&this.container.focus();C.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,e){this.menus.createPopupMenu(a,b,e)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=
+window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(t){}var C=d.fireMouseEvent;d.fireMouseEvent=function(a,b,e){a==mxEvent.MOUSE_DOWN&&this.container.focus();C.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,e){this.menus.createPopupMenu(a,b,e)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=
function(){return keyHandler};var A="rounded shadow glass dashed dashPattern labelBackgroundColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),D="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" ");this.setDefaultStyle=function(a){try{var b=
-d.view.getState(a);if(null!=b){var e=a.clone();e.style="";var c=d.getCellStyle(e);a=[];var e=[],g;for(g in b.style)c[g]!=b.style[g]&&(a.push(b.style[g]),e.push(g));for(var f=d.getModel().getStyle(b.cell),p=null!=f?f.split(";"):[],f=0;f<p.length;f++){var u=p[f],n=u.indexOf("=");if(0<=n){g=u.substring(0,n);var m=u.substring(n+1);null!=c[g]&&"none"==m&&(a.push(m),e.push(g))}}d.getModel().isEdge(b.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",
+d.view.getState(a);if(null!=b){var e=a.clone();e.style="";var c=d.getCellStyle(e);a=[];var e=[],g;for(g in b.style)c[g]!=b.style[g]&&(a.push(b.style[g]),e.push(g));for(var f=d.getModel().getStyle(b.cell),p=null!=f?f.split(";"):[],f=0;f<p.length;f++){var n=p[f],t=n.indexOf("=");if(0<=t){g=n.substring(0,t);var m=n.substring(t+1);null!=c[g]&&"none"==m&&(a.push(m),e.push(g))}}d.getModel().isEdge(b.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",
e,"values",a,"cells",[b.cell]))}}catch(Y){this.handleError(Y)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var G=["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),I=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),
-["strokeColor","strokeWidth"],["fillColor","gradientColor"],G,["opacity"],["align"],["html"]];for(a=0;a<I.length;a++)for(c=0;c<I[a].length;c++)A.push(I[a][c]);for(a=0;a<D.length;a++)0>mxUtils.indexOf(A,D[a])&&A.push(D[a]);var J=function(a,b,e){e=null!=e?e:d.getModel();e.beginUpdate();try{for(var c=0;c<a.length;c++){var g=a[c],f;if(b)f=["fontSize","fontFamily","fontColor"];else{var p=e.getStyle(g),u=null!=p?p.split(";"):[];f=A.slice();for(var n=0;n<u.length;n++){var m=u[n],B=m.indexOf("=");if(0<=B){var t=
-m.substring(0,B),K=mxUtils.indexOf(f,t);0<=K&&f.splice(K,1);for(var l=0;l<I.length;l++){var k=I[l];if(0<=mxUtils.indexOf(k,t))for(var v=0;v<k.length;v++){var x=mxUtils.indexOf(f,k[v]);0<=x&&f.splice(x,1)}}}}}for(var y=e.isEdge(g),q=y?d.currentEdgeStyle:d.currentVertexStyle,E=e.getStyle(g),n=0;n<f.length;n++){var t=f[n],z=q[t];null==z||"shape"==t&&!y||y&&!(0>mxUtils.indexOf(D,t))||(E=mxUtils.setStyle(E,t,z))}e.setStyle(g,E)}}finally{e.endUpdate()}};d.addListener("cellsInserted",function(a,b){J(b.getProperty("cells"))});
+["strokeColor","strokeWidth"],["fillColor","gradientColor"],G,["opacity"],["align"],["html"]];for(a=0;a<I.length;a++)for(c=0;c<I[a].length;c++)A.push(I[a][c]);for(a=0;a<D.length;a++)0>mxUtils.indexOf(A,D[a])&&A.push(D[a]);var J=function(a,b,e){e=null!=e?e:d.getModel();e.beginUpdate();try{for(var c=0;c<a.length;c++){var g=a[c],f;if(b)f=["fontSize","fontFamily","fontColor"];else{var p=e.getStyle(g),n=null!=p?p.split(";"):[];f=A.slice();for(var t=0;t<n.length;t++){var m=n[t],B=m.indexOf("=");if(0<=B){var u=
+m.substring(0,B),K=mxUtils.indexOf(f,u);0<=K&&f.splice(K,1);for(var l=0;l<I.length;l++){var k=I[l];if(0<=mxUtils.indexOf(k,u))for(var v=0;v<k.length;v++){var x=mxUtils.indexOf(f,k[v]);0<=x&&f.splice(x,1)}}}}}for(var y=e.isEdge(g),q=y?d.currentEdgeStyle:d.currentVertexStyle,E=e.getStyle(g),t=0;t<f.length;t++){var u=f[t],z=q[u];null==z||"shape"==u&&!y||y&&!(0>mxUtils.indexOf(D,u))||(E=mxUtils.setStyle(E,u,z))}e.setStyle(g,E)}}finally{e.endUpdate()}};d.addListener("cellsInserted",function(a,b){J(b.getProperty("cells"))});
d.addListener("textInserted",function(a,b){J(b.getProperty("cells"),!0)});this.insertHandler=J;d.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var e=[b.getProperty("cell")];b.getProperty("terminalInserted")&&e.push(b.getProperty("terminal"));J(e)});this.addListener("styleChanged",mxUtils.bind(this,function(a,b){var e=b.getProperty("cells"),c=!1,g=!1;if(0<e.length)for(var f=0;f<e.length&&(c=d.getModel().isVertex(e[f])||c,!(g=d.getModel().isEdge(e[f])||g)||!c);f++);else g=c=!0;for(var e=
b.getProperty("keys"),p=b.getProperty("values"),f=0;f<e.length;f++){var n=0<=mxUtils.indexOf(G,e[f]);if("strokeColor"!=e[f]||null!=p[f]&&"none"!=p[f])if(0<=mxUtils.indexOf(D,e[f]))g||0<=mxUtils.indexOf(F,e[f])?null==p[f]?delete d.currentEdgeStyle[e[f]]:d.currentEdgeStyle[e[f]]=p[f]:c&&0<=mxUtils.indexOf(A,e[f])&&(null==p[f]?delete d.currentVertexStyle[e[f]]:d.currentVertexStyle[e[f]]=p[f]);else if(0<=mxUtils.indexOf(A,e[f])){if(c||n)null==p[f]?delete d.currentVertexStyle[e[f]]:d.currentVertexStyle[e[f]]=
p[f];if(g||n||0<=mxUtils.indexOf(F,e[f]))null==p[f]?delete d.currentEdgeStyle[e[f]]:d.currentEdgeStyle[e[f]]=p[f]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":
@@ -2250,15 +2250,16 @@ EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;Edi
EditorUi.prototype.init=function(){var a=this.editor.graph;if(!a.standalone){"0"!=urlParams["shape-picker"]&&this.installShapePicker();mxEvent.addListener(a.container,"scroll",mxUtils.bind(this,function(){a.tooltipHandler.hide();null!=a.connectionHandler&&null!=a.connectionHandler.constraintHandler&&a.connectionHandler.constraintHandler.reset()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){a.tooltipHandler.hide();var d=a.getRubberband();null!=d&&d.cancel()}));mxEvent.addListener(a.container,
"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
arguments);f.updateActionStates()};a.editLink=f.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};
-EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,f){"mouseDown"==f.getProperty("eventName")&&c.hideShapePicker()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));var f=
-a.dblClick;a.dblClick=function(a,k){if(this.isEnabled())if(null!=k||null==c.sidebar||mxEvent.isShiftDown(a))f.apply(this,arguments);else{var d=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));c.showShapePicker(d.x,d.y)}}};
-EditorUi.prototype.showShapePicker=function(a,c,f,d){f=this.getCellsForShapePicker(f);if(null!=f&&0<f.length){var k=this,l=this.editor.graph,q=document.createElement("div");q.className="geToolbarContainer geSidebarContainer geSidebar";q.style.cssText="position:absolute;left:"+(a-70)+"px;top:"+c+"px;width:140px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;";l.container.appendChild(q);for(var b=mxUtils.bind(this,function(b){var e=document.createElement("a");
+EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){"mouseDown"==d.getProperty("eventName")&&c.hideShapePicker()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){c.hideShapePicker(!0)}));var f=
+a.dblClick;a.dblClick=function(a,d){if(this.isEnabled())if(null!=d||null==c.sidebar||mxEvent.isShiftDown(a))f.apply(this,arguments);else{var l=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));c.showShapePicker(l.x,l.y)}};if(null!=this.hoverIcons){var d=this.hoverIcons.execute;this.hoverIcons.execute=function(f,l,q){var b=q.getEvent();mxEvent.isControlDown(b)||mxEvent.isShiftDown(b)?d.apply(this,arguments):this.graph.connectVertex(f.cell,l,this.graph.defaultEdgeLength,
+b,null,null,mxUtils.bind(this,function(b,d,p){b=a.getCompositeParent(f.cell);for(d=a.getCellGeometry(b);null!=b&&a.model.isVertex(b)&&null!=d&&d.relative;)cell=b,b=a.model.getParent(cell),d=a.getCellGeometry(b);c.showShapePicker(q.getGraphX(),q.getGraphY(),b,mxUtils.bind(this,function(a){p(a)}))}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,b,this)}))}}};
+EditorUi.prototype.showShapePicker=function(a,c,f,d){f=this.getCellsForShapePicker(f);if(null!=f&&0<f.length){var k=this,l=this.editor.graph,q=document.createElement("div");q.className="geToolbarContainer geSidebarContainer geSidebar";q.style.cssText="position:absolute;left:"+(a-22)+"px;top:"+(c-22)+"px;width:140px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;";l.container.appendChild(q);for(var b=mxUtils.bind(this,function(b){var e=document.createElement("a");
e.className="geItem";e.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";q.appendChild(e);k.insertHandler([b],""!=b.value,this.sidebar.graph.model);this.sidebar.createThumb([b],25,25,e,null,!0,!1,b.geometry.width,b.geometry.height);mxEvent.addListener(e,"click",function(){b.geometry.x=l.snap(Math.round(a/l.view.scale)-l.view.translate.x-b.geometry.width/2);b.geometry.y=l.snap(Math.round(c/l.view.scale)-
-l.view.translate.y-b.geometry.height/2);l.model.beginUpdate();try{null!=d?d(b):l.addCell(b)}finally{l.model.endUpdate()}null==d&&(l.setSelectionCell(b),l.scrollCellToVisible(l.getSelectionCell()),l.startEditingAtCell(b));k.hideShapePicker()})}),e=0;e<f.length;e++)b(f[e]);this.shapePickerCallback=d;this.shapePicker=q}};
-EditorUi.prototype.getCellsForShapePicker=function(a){var c=mxUtils.bind(this,function(a,d,c,l){return this.editor.graph.createVertex(null,null,l||"",0,0,d||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("rounded=1;whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("rhombus;whiteSpace=wrap;html=1;",
-80,80),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;"),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;",120,80),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",
-120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",80,100),c("shape=card;whiteSpace=wrap;html=1;",80,100),c("shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;",120,80),c("shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;",
-30,60)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9!=a.which||!c.isEnabled()||mxEvent.isAltDown(a)||c.isEditing()&&mxEvent.isShiftDown(a)||(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))};
+l.view.translate.y-b.geometry.height/2);l.model.beginUpdate();try{null!=d?d(b):l.addCell(b)}finally{l.model.endUpdate()}null==d&&(l.setSelectionCell(b),l.scrollCellToVisible(l.getSelectionCell()),l.startEditingAtCell(b));k.hideShapePicker()})}),e=0;e<f.length;e++)b(f[e]);this.shapePickerCallback=d;this.shapePicker=q;l.tooltipHandler.hideTooltip();this.hideCurrentMenu()}};
+EditorUi.prototype.getCellsForShapePicker=function(a){var c=mxUtils.bind(this,function(a,d,c,l){return this.editor.graph.createVertex(null,null,l||"",0,0,d||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;",120,80),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;"),
+c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;",120,60),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;",120,80),c("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;",
+80,100),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80)]};
+EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;9!=a.which||!c.isEnabled()||mxEvent.isAltDown(a)||c.isEditing()&&mxEvent.isShiftDown(a)||(c.isEditing()?c.stopEditing(!1):c.selectCell(!mxEvent.isShiftDown(a)),mxEvent.consume(a))};
EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,null!=c.textarea&&(c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a))))};
EditorUi.prototype.isImmediateEditingEvent=function(a){return!0};
EditorUi.prototype.getCssClassForMarker=function(a,c,f,d){return"flexArrow"==c?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==f||"halfCircle"==f?"geSprite geSvgSprite geSprite-"+f+("end"==a?" geFlipSprite":""):f==mxConstants.ARROW_CLASSIC?"1"==d?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==d?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?
@@ -2267,13 +2268,13 @@ f==mxConstants.ARROW_DIAMOND_THIN?"1"==d?"geSprite geSprite-"+a+"thindiamond":"g
f?"geSprite geSprite-"+a+"eronetoone":"ERmany"==f?"geSprite geSprite-"+a+"ermany":"ERoneToMany"==f?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==f?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==f?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,c=this.actions.get("paste"),f=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(d){var c=null;if(d.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var c=c||d.getSelectionCells(),c=d.getExportableCells(d.model.getTopmostCells(c)),b={},e=d.createCellLookup(c),g=d.cloneCells(c,null,b),f=new mxGraphModel,m=f.getChildAt(f.getRoot(),
-0),n=0;n<g.length;n++){f.add(m,g[n]);var l=d.view.getState(c[n]);if(null!=l){var t=d.getCellGeometry(g[n]);null!=t&&t.relative&&!f.isEdge(c[n])&&null==e[mxObjectIdentity.get(f.getParent(c[n]))]&&(t.offset=null,t.relative=!1,t.x=l.x/l.view.scale-l.view.translate.x,t.y=l.y/l.view.scale-l.view.translate.y)}}d.updateCustomLinks(d.createCellMapping(b,e),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}a.updatePasteActionStates();return c};var f=mxClipboard.paste;mxClipboard.paste=function(d){var c=
+0),n=0;n<g.length;n++){f.add(m,g[n]);var l=d.view.getState(c[n]);if(null!=l){var u=d.getCellGeometry(g[n]);null!=u&&u.relative&&!f.isEdge(c[n])&&null==e[mxObjectIdentity.get(f.getParent(c[n]))]&&(u.offset=null,u.relative=!1,u.x=l.x/l.view.scale-l.view.translate.x,u.y=l.y/l.view.scale-l.view.translate.y)}}d.updateCustomLinks(d.createCellMapping(b,e),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}a.updatePasteActionStates();return c};var f=mxClipboard.paste;mxClipboard.paste=function(d){var c=
null;d.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):c=f.apply(this,arguments);a.updatePasteActionStates();return c};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};var k=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(d,c){k.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,e){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var c=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(b,e,d,c){if(null!=a.container&&!a.isViewer()){d=null!=d?d:0;c=null!=c?c:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),f=mxUtils.hasScrollbars(a.container),p=a.view.translate,n=a.view.scale,m=mxRectangle.fromRectangle(g);
-m.x=m.x/n-p.x;m.y=m.y/n-p.y;m.width/=n;m.height/=n;var p=a.container.scrollTop,u=a.container.scrollLeft,t=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)t+=3;var B=a.container.offsetWidth-t,t=a.container.offsetHeight-t;b=b?Math.max(.3,Math.min(e||1,B/m.width)):n;e=(B-b*m.width)/2/b;var L=0==this.lightboxVerticalDivider?0:(t-b*m.height)/this.lightboxVerticalDivider/b;f&&(e=Math.max(e,0),L=Math.max(L,0));if(f||g.width<B||g.height<t)a.view.scaleAndTranslate(b,
-Math.floor(e-m.x),Math.floor(L-m.y)),a.container.scrollTop=p*b/n,a.container.scrollLeft=u*b/n;else if(0!=d||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",
+m.x=m.x/n-p.x;m.y=m.y/n-p.y;m.width/=n;m.height/=n;var p=a.container.scrollTop,t=a.container.scrollLeft,u=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)u+=3;var B=a.container.offsetWidth-u,u=a.container.offsetHeight-u;b=b?Math.max(.3,Math.min(e||1,B/m.width)):n;e=(B-b*m.width)/2/b;var L=0==this.lightboxVerticalDivider?0:(u-b*m.height)/this.lightboxVerticalDivider/b;f&&(e=Math.max(e,0),L=Math.max(L,0));if(f||g.width<B||g.height<u)a.view.scaleAndTranslate(b,
+Math.floor(e-m.x),Math.floor(L-m.y)),a.container.scrollTop=p*b/n,a.container.scrollLeft=t*b/n;else if(0!=d||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",
mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var k=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";
this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=a.isViewer()?"0":"50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var l=mxUtils.bind(this,function(){var b=
mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",l);l();var q=0,l=mxUtils.bind(this,function(a,b,e){q++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=e&&d.setAttribute("title",
@@ -2281,23 +2282,23 @@ e);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("
e=document.createElement("div");e.style.display="inline-block";e.style.verticalAlign="top";e.style.fontFamily="Helvetica,Arial";e.style.marginTop="8px";e.style.fontSize="14px";e.style.color="#ffffff";this.chromelessToolbar.appendChild(e);var g=l(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),p=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(e.innerHTML="",mxUtils.write(e,
mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});b.style.paddingLeft="0px";b.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",b.style.display="",e.style.display="inline-block"):(g.style.display="none",b.style.display="none",e.style.display="none");p()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",
p)}l(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");l(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");l(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,
-mxResources.get("fit"));var n=null,v=null,t=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;v=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";v=null}),600)}),a||200)}),x=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),
+mxResources.get("fit"));var n=null,v=null,u=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;v=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";v=null}),600)}),a||200)}),x=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=v&&(window.clearTimeout(v),
fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var y=l(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=
null}));var e=y.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=e.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=e.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),E=a.getModel();E.addListener(mxEvent.CHANGE,function(){y.style.display=1<E.getChildCount(E.root)?"":"none"})}this.addChromelessToolbarItems(l);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||l(mxUtils.bind(this,function(b){null!=
this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var z=this.lightboxToolbarActions[m];l(z.fn,z.icon,z.tooltip)}null!=k.refreshBtn&&l(mxUtils.bind(this,function(a){k.refreshBtn.url?window.location.href=k.refreshBtn.url:
window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));null!=k.fullscreenBtn&&window.self!==window.top&&l(mxUtils.bind(this,function(b){k.fullscreenBtn.url?a.openLink(k.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(b)}),Editor.fullscreenLargeImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(k.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&l(mxUtils.bind(this,
function(a){"1"==urlParams.close||k.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||
-x(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():x(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?t():x(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+x(30),u())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():x(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():x(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
x(30)}));var C=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,e){this.startX=e.getGraphX();this.startY=e.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,e){mxEvent.isTouchEvent(e.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<C&&Math.abs(this.scrollTop-a.container.scrollTop)<C&&Math.abs(this.startX-e.getGraphX())<C&&Math.abs(this.startY-e.getGraphY())<
-C&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?t():x(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var A=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}A.apply(this,arguments)};if(!a.isViewer()){var D=a.sizeDidChange;a.sizeDidChange=
+C&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?u():x(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var A=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}A.apply(this,arguments)};if(!a.isViewer()){var D=a.sizeDidChange;a.sizeDidChange=
function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),e=this.getPagePadding(),d=this.getPageSize(),c=Math.ceil(2*e.x+b.width*d.width),g=Math.ceil(2*e.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=c||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=e.x-b.x*d.width;e=e.y-b.y*d.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==e?D.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=
-b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(c,e),a.container.scrollLeft+=Math.round((c-b)*a.view.scale),a.container.scrollTop+=Math.round((e-d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var G=a.view.getBackgroundPane(),F=a.view.getDrawPane();a.cumulativeZoomFactor=1;var I=null,J=null,u=null,K=null,B=function(b){null!=I&&window.clearTimeout(I);window.setTimeout(function(){a.isMouseDown||(I=window.setTimeout(mxUtils.bind(this,
+b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(c,e),a.container.scrollLeft+=Math.round((c-b)*a.view.scale),a.container.scrollTop+=Math.round((e-d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var G=a.view.getBackgroundPane(),F=a.view.getDrawPane();a.cumulativeZoomFactor=1;var I=null,J=null,t=null,K=null,B=function(b){null!=I&&window.clearTimeout(I);window.setTimeout(function(){a.isMouseDown||(I=window.setTimeout(mxUtils.bind(this,
function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),F.style.transformOrigin="",G.style.transformOrigin="",mxClient.IS_SF?(F.style.transform="scale(1)",G.style.transform="scale(1)",window.setTimeout(function(){F.style.transform="";G.style.transform=""},0)):(F.style.transform=
-"",G.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var b=new mxPoint(a.container.scrollLeft,a.container.scrollTop),e=mxUtils.getOffset(a.container),d=a.view.scale,g=0,p=0;null!=J&&(g=a.container.offsetWidth/2-J.x+e.x,p=a.container.offsetHeight/2-J.y+e.y);a.zoom(a.cumulativeZoomFactor);a.view.scale!=d&&(null!=u&&(g+=b.x-u.x,p+=b.y-u.y),null!=c&&f.chromelessResize(!1,null,g*(a.cumulativeZoomFactor-1),p*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||
-0==g&&0==p||(a.container.scrollLeft-=g*(a.cumulativeZoomFactor-1),a.container.scrollTop-=p*(a.cumulativeZoomFactor-1)));null!=K&&F.setAttribute("filter",K);a.cumulativeZoomFactor=1;K=J=u=I=null}),null!=b?b:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay))},0)};a.lazyZoom=function(b,e,d){(e=e||!a.scrollbars)&&(J=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
+"",G.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var b=new mxPoint(a.container.scrollLeft,a.container.scrollTop),e=mxUtils.getOffset(a.container),d=a.view.scale,g=0,n=0;null!=J&&(g=a.container.offsetWidth/2-J.x+e.x,n=a.container.offsetHeight/2-J.y+e.y);a.zoom(a.cumulativeZoomFactor);a.view.scale!=d&&(null!=t&&(g+=b.x-t.x,n+=b.y-t.y),null!=c&&f.chromelessResize(!1,null,g*(a.cumulativeZoomFactor-1),n*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||
+0==g&&0==n||(a.container.scrollLeft-=g*(a.cumulativeZoomFactor-1),a.container.scrollTop-=n*(a.cumulativeZoomFactor-1)));null!=K&&F.setAttribute("filter",K);a.cumulativeZoomFactor=1;K=J=t=I=null}),null!=b?b:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay))},0)};a.lazyZoom=function(b,e,d){(e=e||!a.scrollbars)&&(J=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160))/this.view.scale;if(a.isFastZoomEnabled()){null==K&&""!=F.getAttribute("filter")&&(K=F.getAttribute("filter"),F.removeAttribute("filter"));u=new mxPoint(a.container.scrollLeft,a.container.scrollTop);b=e?a.container.scrollLeft+a.container.clientWidth/2:J.x+a.container.scrollLeft-a.container.offsetLeft;var c=e?a.container.scrollTop+a.container.clientHeight/2:J.y+a.container.scrollTop-a.container.offsetTop;F.style.transformOrigin=b+"px "+c+"px";F.style.transform="scale("+
+this.cumulativeZoomFactor,160))/this.view.scale;if(a.isFastZoomEnabled()){null==K&&""!=F.getAttribute("filter")&&(K=F.getAttribute("filter"),F.removeAttribute("filter"));t=new mxPoint(a.container.scrollLeft,a.container.scrollTop);b=e?a.container.scrollLeft+a.container.clientWidth/2:J.x+a.container.scrollLeft-a.container.offsetLeft;var c=e?a.container.scrollTop+a.container.clientHeight/2:J.y+a.container.scrollTop-a.container.offsetTop;F.style.transformOrigin=b+"px "+c+"px";F.style.transform="scale("+
this.cumulativeZoomFactor+")";G.style.transformOrigin=b+"px "+c+"px";G.style.transform="scale("+this.cumulativeZoomFactor+")";null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(b=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(b.style,"transform-origin",(e?a.container.clientWidth/2+a.container.scrollLeft-b.offsetLeft+"px":J.x+a.container.scrollLeft-b.offsetLeft-a.container.offsetLeft+"px")+" "+(e?a.container.clientHeight/2+a.container.scrollTop-b.offsetTop+"px":J.y+
a.container.scrollTop-b.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(b.style,"transform","scale("+this.cumulativeZoomFactor+")"));a.view.getDecoratorPane().style.opacity="0";a.view.getOverlayPane().style.opacity="0";null!=f.hoverIcons&&f.hoverIcons.reset()}B(d)};mxEvent.addGestureListeners(a.container,function(a){null!=I&&window.clearTimeout(I)},null,function(b){1!=a.cumulativeZoomFactor&&B(0)});mxEvent.addListener(a.container,"scroll",function(){I&&!a.isMouseDown&&1!=a.cumulativeZoomFactor&&
B(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,e,d){if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&a.isScrollWheelEvent(b)){d=a.view.getTranslate();var c=40/a.view.scale;mxEvent.isShiftDown(b)?a.view.setTranslate(d.x+(e?-c:c),d.y):a.view.setTranslate(d.x,d.y+(e?c:-c))}else if(d||a.isZoomWheelEvent(b))for(d=mxEvent.getSource(b);null!=d;){if(d==a.container)return a.tooltipHandler.hideTooltip(),J=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),a.lazyZoom(e),
@@ -2384,32 +2385,32 @@ mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphMo
mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,c,f){return null};
Graph=function(a,c,f,d,k,l){mxGraph.call(this,a,c,f,d);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=l?l:!1;a=this.baseUrl;c=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=a.indexOf("/",c+2),0<c&&(this.domainUrl=a.substring(0,c)),c=a.lastIndexOf("/"),0<c&&(this.domainPathUrl=a.substring(0,c+1)));this.isHtmlLabel=function(a){a=this.getCurrentCellStyle(a);
return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var q=null,b=null,e=null,g=null,p=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")&&this.isEnabled()){var c=d.getProperty("event"),f=c.getState();if(!mxEvent.isAltDown(c.getEvent())&&null!=f)if(this.model.isEdge(f.cell))if(q=new mxPoint(c.getGraphX(),c.getGraphY()),p=this.isCellSelected(f.cell),e=f,b=c,null!=f.text&&null!=f.text.boundingBox&&
-mxUtils.contains(f.text.boundingBox,c.getGraphX(),c.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(g=m.getHandleForEvent(c))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(c.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(c))){var u=new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);u.grow(mxEvent.isTouchEvent(c.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)){var n=this.model.getParent(f.cell),m=this.model.getParent(n);if(!this.isCellSelected(m)&&(mxUtils.intersects(u,new mxRectangle(f.x,f.y-2,f.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(u,new mxRectangle(f.x,f.y+f.height-2,f.width,3))||mxUtils.intersects(u,new mxRectangle(f.x-2,f.y,2,f.height))&&this.model.getChildAt(n,0)!=f.cell||mxUtils.intersects(u,new mxRectangle(f.x+f.width-
-2,f.y,2,f.height)))&&(n=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,c.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m)){var t=m.getHandleForEvent(c);null!=t&&(m.start(c.getGraphX(),c.getGraphY(),t),m.blockDelayedSelection=!n,c.consume())}}for(;!c.isConsumed()&&null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),n=this.view.scale,(0<m.x||0<m.width)&&mxUtils.intersects(u,
-new mxRectangle(f.x+(m.x-m.width-1)*n+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(u,new mxRectangle(f.x,f.y+(m.y-m.height-1)*n+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,c.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(t=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(c.getGraphX(),c.getGraphY(),t),c.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(a,b){},
+mxUtils.contains(f.text.boundingBox,c.getGraphX(),c.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(g=m.getHandleForEvent(c))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(c.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(c))){var t=new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);t.grow(mxEvent.isTouchEvent(c.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)){var n=this.model.getParent(f.cell),m=this.model.getParent(n);if(!this.isCellSelected(m)&&(mxUtils.intersects(t,new mxRectangle(f.x,f.y-2,f.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(t,new mxRectangle(f.x,f.y+f.height-2,f.width,3))||mxUtils.intersects(t,new mxRectangle(f.x-2,f.y,2,f.height))&&this.model.getChildAt(n,0)!=f.cell||mxUtils.intersects(t,new mxRectangle(f.x+f.width-
+2,f.y,2,f.height)))&&(n=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,c.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m)){var u=m.getHandleForEvent(c);null!=u&&(m.start(c.getGraphX(),c.getGraphY(),u),m.blockDelayedSelection=!n,c.consume())}}for(;!c.isConsumed()&&null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),n=this.view.scale,(0<m.x||0<m.width)&&mxUtils.intersects(t,
+new mxRectangle(f.x+(m.x-m.width-1)*n+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(t,new mxRectangle(f.x,f.y+(m.y-m.height-1)*n+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,c.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(u=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(c.getGraphX(),c.getGraphY(),u),c.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(a,b){},
mouseMove:mxUtils.bind(this,function(a,d){var c=this.selectionCellsHandler.handlers.map,f;for(f in c)if(null!=c[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(d.getEvent()))if(f=this.tolerance,null!=q&&null!=e&&null!=b){if(c=e,Math.abs(q.x-d.getGraphX())>f||Math.abs(q.y-d.getGraphY())>f){this.isCellSelected(c.cell)||this.selectCellForEvent(c.cell,d.getEvent());var m=this.selectionCellsHandler.getHandler(c.cell);if(null!=m&&null!=m.bends&&0<m.bends.length){f=
-m.getHandleForEvent(b);var u=this.view.getEdgeStyle(c),n=u==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(n&&0!=f&&f!=m.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!n||null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),d.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=c.visibleSourceState||f==m.bends.length-1||null!=c.visibleTargetState)n||f==mxEvent.LABEL_HANDLE||(n=c.absolutePoints,null!=n&&(null==u&&null==f||u==mxEdgeStyle.OrthConnector)&&(f=
-g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,n[0].x,n[0].y)?f=0:mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y)?f=m.bends.length-1:null!=u&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?f=2:(f=mxUtils.findNearestSegment(c,q.x,q.y),f=null==u?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),m.start(d.getGraphX(),
+m.getHandleForEvent(b);var t=this.view.getEdgeStyle(c),n=t==mxEdgeStyle.EntityRelation;p||g!=mxEvent.LABEL_HANDLE||(f=g);if(n&&0!=f&&f!=m.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!n||null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),d.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=c.visibleSourceState||f==m.bends.length-1||null!=c.visibleTargetState)n||f==mxEvent.LABEL_HANDLE||(n=c.absolutePoints,null!=n&&(null==t&&null==f||t==mxEdgeStyle.OrthConnector)&&(f=
+g,null==f&&(f=new mxRectangle(q.x,q.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,n[0].x,n[0].y)?f=0:mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y)?f=m.bends.length-1:null!=t&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?f=2:(f=mxUtils.findNearestSegment(c,q.x,q.y),f=null==t?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),m.start(d.getGraphX(),
d.getGraphX(),f),g=q=b=e=null,p=!1,d.consume(),this.graphHandler.reset()}}}else if(c=d.getState(),null!=c){m=null;if(this.model.isEdge(c.cell)){if(f=new mxRectangle(d.getGraphX(),d.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),n=c.absolutePoints,null!=n)if(null!=c.text&&null!=c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,d.getGraphX(),d.getGraphY()))m="move";else if(mxUtils.contains(f,n[0].x,n[0].y)||mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y))m="pointer";else if(null!=
-c.visibleSourceState||null!=c.visibleTargetState)f=this.view.getEdgeStyle(c),m="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(f=mxUtils.findNearestSegment(c,d.getGraphX(),d.getGraphY()),f<n.length-1&&0<=f&&(m=0==Math.round(n[f].x-n[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(d.getEvent())){f=new mxRectangle(d.getGraphX()-1,d.getGraphY()-1);f.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(c.cell)&&(n=this.model.getParent(c.cell),u=this.model.getParent(n),
-!this.isCellSelected(u)))if(mxUtils.intersects(f,new mxRectangle(c.x-2,c.y,2,c.height))&&this.model.getChildAt(n,0)!=c.cell||mxUtils.intersects(f,new mxRectangle(c.x+c.width-2,c.y,2,c.height)))m="col-resize";else if(mxUtils.intersects(f,new mxRectangle(c.x,c.y-2,c.width,3))&&this.model.getChildAt(u,0)!=n||mxUtils.intersects(f,new mxRectangle(c.x,c.y+c.height-2,c.width,3)))m="row-resize";for(n=c;null==m&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var u=
-this.getActualStartSize(n.cell),t=this.view.scale;(0<u.x||0<u.width)&&mxUtils.intersects(f,new mxRectangle(n.x+(u.x-u.width-1)*t+(0==u.x?n.width*t:0),n.y,1,n.height))?m="col-resize":(0<u.y||0<u.height)&&mxUtils.intersects(f,new mxRectangle(n.x,n.y+(u.y-u.height-1)*t+(0==u.y?n.height:0),n.width,1))&&(m="row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=m&&c.setCursor(m)}}),mouseUp:mxUtils.bind(this,function(a,d){g=q=b=e=null})})}this.cellRenderer.getLabelValue=function(a){var b=
+c.visibleSourceState||null!=c.visibleTargetState)f=this.view.getEdgeStyle(c),m="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(f=mxUtils.findNearestSegment(c,d.getGraphX(),d.getGraphY()),f<n.length-1&&0<=f&&(m=0==Math.round(n[f].x-n[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(d.getEvent())){f=new mxRectangle(d.getGraphX()-1,d.getGraphY()-1);f.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(c.cell)&&(n=this.model.getParent(c.cell),t=this.model.getParent(n),
+!this.isCellSelected(t)))if(mxUtils.intersects(f,new mxRectangle(c.x-2,c.y,2,c.height))&&this.model.getChildAt(n,0)!=c.cell||mxUtils.intersects(f,new mxRectangle(c.x+c.width-2,c.y,2,c.height)))m="col-resize";else if(mxUtils.intersects(f,new mxRectangle(c.x,c.y-2,c.width,3))&&this.model.getChildAt(t,0)!=n||mxUtils.intersects(f,new mxRectangle(c.x,c.y+c.height-2,c.width,3)))m="row-resize";for(n=c;null==m&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var t=
+this.getActualStartSize(n.cell),u=this.view.scale;(0<t.x||0<t.width)&&mxUtils.intersects(f,new mxRectangle(n.x+(t.x-t.width-1)*u+(0==t.x?n.width*u:0),n.y,1,n.height))?m="col-resize":(0<t.y||0<t.height)&&mxUtils.intersects(f,new mxRectangle(n.x,n.y+(t.y-t.height-1)*u+(0==t.y?n.height:0),n.width,1))&&(m="row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=m&&c.setCursor(m)}}),mouseUp:mxUtils.bind(this,function(a,d){g=q=b=e=null})})}this.cellRenderer.getLabelValue=function(a){var b=
mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=
!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],e=this.graph.pageFormat,d=this.graph.pageScale,c=e.width*d,e=e.height*d,d=this.graph.view.translate,f=this.graph.view.scale,g=this.graph.getPageLayout(),
p=0;p<g.width;p++)b.push(new mxRectangle(((g.x+p)*c+d.x)*f,(g.y*e+d.y)*f,c*f,e*f));for(p=1;p<g.height;p++)b.push(new mxRectangle((g.x*c+d.x)*f,((g.y+p)*e+d.y)*f,c*f,e*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;
return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var n=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var b=n.apply(this,arguments),e=new mxDictionary,d=[],c=0;c<b.length;c++){var f=this.graph.isTableCell(a)&&this.graph.isTableCell(b[c])&&this.graph.isCellSelected(b[c])?this.graph.model.getParent(b[c]):this.graph.isTableRow(a)&&this.graph.isTableRow(b[c])&&this.graph.isCellSelected(b[c])?b[c]:this.graph.getCompositeParent(b[c]);null==f||e.get(f)||(e.put(f,
-!0),d.push(f))}return d};var v=this.graphHandler.start;this.graphHandler.start=function(a,b,e,d){var c=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?c=!0:a=this.graph.model.getParent(a));c||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));v.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);
-this.getRubberband=function(){return t};var x=(new Date).getTime(),y=0,E=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;E.apply(this,arguments);a!=this.currentState?(x=(new Date).getTime(),y=0):y=(new Date).getTime()-x};var z=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&z.apply(this,arguments)};var C=this.isToggleEvent;this.isToggleEvent=function(a){return C.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var A=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(a){return A.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&
+!0),d.push(f))}return d};var v=this.graphHandler.start;this.graphHandler.start=function(a,b,e,d){var c=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?c=!0:a=this.graph.model.getParent(a));c||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));v.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var u=new mxRubberband(this);
+this.getRubberband=function(){return u};var x=(new Date).getTime(),y=0,E=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;E.apply(this,arguments);a!=this.currentState?(x=(new Date).getTime(),y=0):y=(new Date).getTime()-x};var z=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&z.apply(this,arguments)};var C=this.isToggleEvent;this.isToggleEvent=function(a){return C.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var A=u.isForceRubberbandEvent;u.isForceRubberbandEvent=function(a){return A.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&
mxEvent.isTouchEvent(a.getEvent())};var D=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(D=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=D)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var G=this.click;this.click=
function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return G.apply(this,arguments);var e=b?a.sourceState.cell:a.getCell();null!=e&&(e=this.getClickableLinkForCell(e),null!=e&&(this.isCustomLink(e)?this.customLinkClicked(e):this.openLink(e)));this.isEnabled()&&b&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=
a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var F=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getClickableLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return F.apply(this,arguments)};this.selectRegion=function(a,b){var e=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(e,b);return e};this.getAllCells=function(a,
-b,e,d,c,f){f=null!=f?f:[];if(0<e||0<d){var g=this.getModel(),p=a+e,m=b+d;null==c&&(c=this.getCurrentRoot(),null==c&&(c=g.getRoot()));if(null!=c)for(var n=g.getChildCount(c),u=0;u<n;u++){var t=g.getChildAt(c,u),l=this.view.getState(t);if(null!=l&&this.isCellVisible(t)&&"1"!=mxUtils.getValue(l.style,"locked","0")){var B=mxUtils.getValue(l.style,mxConstants.STYLE_ROTATION)||0;0!=B&&(l=mxUtils.getBoundingBox(l,B));(g.isEdge(t)||g.isVertex(t))&&l.x>=a&&l.y+l.height<=m&&l.y>=b&&l.x+l.width<=p&&f.push(t);
-this.getAllCells(a,b,e,d,t,f)}}}return f};var I=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,e){return this.graph.isCellSelected(a)?!1:I.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var J=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==
-b.getProperty("eventName")){var e=b.getProperty("event").getState();J=null==e||this.isSelectionEmpty()||this.isCellSelected(e.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var e=b.getProperty("event"),d=b.getProperty("cell");null==d?(e=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),t.start(e.x,e.y)):null!=J?this.addSelectionCells(J):1<this.getSelectionCount()&&this.isCellSelected(d)&&
-this.removeSelectionCell(d);J=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var e=a.view.graph;return b&&(e.isCellSelected(a.cell)||e.isTableRow(a.cell)&&e.selectionCellsHandler.isHandled(e.model.getParent(a.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,
-!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var u=this.updateMouseEvent;this.updateMouseEvent=function(a){a=u.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;
+b,e,d,c,f){f=null!=f?f:[];if(0<e||0<d){var g=this.getModel(),p=a+e,m=b+d;null==c&&(c=this.getCurrentRoot(),null==c&&(c=g.getRoot()));if(null!=c)for(var n=g.getChildCount(c),t=0;t<n;t++){var u=g.getChildAt(c,t),B=this.view.getState(u);if(null!=B&&this.isCellVisible(u)&&"1"!=mxUtils.getValue(B.style,"locked","0")){var l=mxUtils.getValue(B.style,mxConstants.STYLE_ROTATION)||0;0!=l&&(B=mxUtils.getBoundingBox(B,l));(g.isEdge(u)||g.isVertex(u))&&B.x>=a&&B.y+B.height<=m&&B.y>=b&&B.x+B.width<=p&&f.push(u);
+this.getAllCells(a,b,e,d,u,f)}}}return f};var I=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,e){return this.graph.isCellSelected(a)?!1:I.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var J=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==
+b.getProperty("eventName")){var e=b.getProperty("event").getState();J=null==e||this.isSelectionEmpty()||this.isCellSelected(e.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var e=b.getProperty("event"),c=b.getProperty("cell");null==c?(e=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),u.start(e.x,e.y)):null!=J?this.addSelectionCells(J):1<this.getSelectionCount()&&this.isCellSelected(c)&&
+this.removeSelectionCell(c);J=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){var e=a.view.graph;return b&&(e.isCellSelected(a.cell)||e.isTableRow(a.cell)&&e.selectionCellsHandler.isHandled(e.model.getParent(a.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,
+!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var t=this.updateMouseEvent;this.updateMouseEvent=function(a){a=t.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;
Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;Graph.minTableColumnWidth=20;Graph.minTableRowHeight=20;Graph.foreignObjectWarningText="Viewer does not support full SVG 1.1";Graph.foreignObjectWarningLink="https://desk.draw.io/support/solutions/articles/16000042487";
Graph.createSvgImage=function(a,c,f,d,k){f=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" '+(null!=d&&null!=k?'viewBox="0 0 '+d+" "+k+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,c)};
Graph.zapGremlins=function(a){for(var c=[],f=0;f<a.length;f++){var d=a.charCodeAt(f);(32<=d||9==d||10==d||13==d)&&65535!=d&&65534!=d&&c.push(a.charAt(f))}return c.join("")};Graph.stringToBytes=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=a.charCodeAt(f);return c};Graph.bytesToString=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=String.fromCharCode(a[f]);return c.join("")};Graph.compressNode=function(a,c){var f=mxUtils.getXml(a);return Graph.compress(c?f:Graph.zapGremlins(f))};
@@ -2419,7 +2420,7 @@ Graph.linkPattern=/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((
Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;
Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0];Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"];
Graph.prototype.standalone=!1;
-Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var d=a.view.graph.tolerance,c=!0,l=null,q=mxUtils.bind(this,function(a){c=!0;l=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),b=mxUtils.bind(this,function(a){c=c&&null!=l&&Math.abs(l.x-mxEvent.getClientX(a))<d&&Math.abs(l.y-mxEvent.getClientY(a))<d}),e=mxUtils.bind(this,function(b){if(c)for(var e=mxEvent.getSource(b);null!=
+Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var c=a.view.graph.tolerance,k=!0,l=null,q=mxUtils.bind(this,function(a){k=!0;l=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),b=mxUtils.bind(this,function(a){k=k&&null!=l&&Math.abs(l.x-mxEvent.getClientX(a))<c&&Math.abs(l.y-mxEvent.getClientY(a))<c}),e=mxUtils.bind(this,function(b){if(k)for(var e=mxEvent.getSource(b);null!=
e&&e!=f.node;){if("a"==e.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,e,b);break}e=e.parentNode}});mxEvent.addGestureListeners(f.node,q,b,e);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()};
(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.getCells=function(a,c){a=null!=a?a:!0;c=null!=c?c:!0;var d=this.model;return d.filterDescendants(function(f){return a&&d.isVertex(f)||c&&d.isEdge(f)},d.getRoot())};Graph.prototype.getStartEditingCell=function(a,c){var d=this.getCellStyle(a),d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(a)&&(!this.isSwimlane(a)||0==d)&&""==this.getLabel(a)&&
0<this.model.getChildCount(a)&&(a=this.model.getChildAt(a,0),d=this.getCellStyle(a),d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(a)&&(!this.isSwimlane(a)||0==d)&&""==this.getLabel(a)&&0<this.model.getChildCount(a))for(d=0;d<this.model.getChildCount(a);d++){var f=this.model.getChildAt(a,d);if(this.isCellEditable(f)){a=f;break}}return a};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&
@@ -2448,21 +2449,21 @@ Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);ret
Graph.prototype.getClickableLinkForCell=function(a){do{var c=this.getLinkForCell(a);if(null!=c)return c;a=this.model.getParent(a)}while(null!=a);return null};Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
Graph.prototype.formatDate=function(a,c,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var d=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,l=/[^-+\dA-Z]/g,q=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(d.masks[c]||c||d.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),f=!0);var b=f?"getUTC":"get",e=a[b+"Date"](),g=a[b+"Day"](),p=a[b+"Month"](),m=a[b+"FullYear"](),n=a[b+"Hours"](),v=a[b+"Minutes"](),t=a[b+"Seconds"](),b=a[b+"Milliseconds"](),x=f?0:a.getTimezoneOffset(),y={d:e,dd:q(e),ddd:d.i18n.dayNames[g],dddd:d.i18n.dayNames[g+7],m:p+1,mm:q(p+1),mmm:d.i18n.monthNames[p],mmmm:d.i18n.monthNames[p+
-12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:q(n%12||12),H:n,HH:q(n),M:v,MM:q(v),s:t,ss:q(t),l:q(b,3),L:q(99<b?Math.round(b/10):b),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(l,""),o:(0<x?"-":"+")+q(100*Math.floor(Math.abs(x)/60)+Math.abs(x)%60,4),S:["th","st","nd","rd"][3<e%10?0:(10!=e%100-e%10)*e%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in y?y[a]:a.slice(1,
+/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(d.masks[c]||c||d.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),f=!0);var b=f?"getUTC":"get",e=a[b+"Date"](),g=a[b+"Day"](),p=a[b+"Month"](),m=a[b+"FullYear"](),n=a[b+"Hours"](),v=a[b+"Minutes"](),u=a[b+"Seconds"](),b=a[b+"Milliseconds"](),x=f?0:a.getTimezoneOffset(),y={d:e,dd:q(e),ddd:d.i18n.dayNames[g],dddd:d.i18n.dayNames[g+7],m:p+1,mm:q(p+1),mmm:d.i18n.monthNames[p],mmmm:d.i18n.monthNames[p+
+12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:q(n%12||12),H:n,HH:q(n),M:v,MM:q(v),s:u,ss:q(u),l:q(b,3),L:q(99<b?Math.round(b/10):b),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(l,""),o:(0<x?"-":"+")+q(100*Math.floor(Math.abs(x)/60)+Math.abs(x)%60,4),S:["th","st","nd","rd"][3<e%10?0:(10!=e%100-e%10)*e%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in y?y[a]:a.slice(1,
a.length-1)})};
Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var c=this.getModel(),f=c.getChildCount(c.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");c.isVisible(d)&&(k.setAttribute("checked","checked"),
k.defaultChecked=!0);f.appendChild(k);var b=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",b);mxUtils.write(f,b);a.appendChild(f);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");c.setVisible(d,k.checked)})})(c.getChildAt(c.root,d));return a};
Graph.prototype.replacePlaceholders=function(a,c){var f=[];if(null!=c){for(var d=0;match=this.placeholderPattern.exec(c);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var l=null;if(match.index>d&&"%"==c.charAt(match.index-1))l=k.substring(1);else{var q=k.substring(1,k.length-1);if("id"==q)l=a.id;else if(0>q.indexOf("{"))for(var b=a;null==l&&null!=b;)null!=b.value&&"object"==typeof b.value&&(l=b.hasAttribute(q)?null!=b.getAttribute(q)?b.getAttribute(q):"":null),b=this.model.getParent(b);
null==l&&(l=this.getGlobalVariable(q))}f.push(c.substring(d,match.index)+(null!=l?l:k));d=match.index+k.length}}f.push(c.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&c.push(d)}this.setSelectionCells(c)}else this.clearSelection()};
-Graph.prototype.selectCellsForConnectVertex=function(a,c,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(c)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};Graph.prototype.getConnectVertexTargetAt=function(a,c,f,d){return this.getCellAt(c,f)};
+Graph.prototype.selectCellsForConnectVertex=function(a,c,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(c)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};
Graph.prototype.connectVertex=function(a,c,f,d,k,l,q,b){if(a.geometry.relative&&this.model.isEdge(a.parent))return[];l=l?l:!1;var e=this.getCompositeParent(a),g=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(e.geometry.x,e.geometry.y);c==mxConstants.DIRECTION_NORTH?(g.x+=e.geometry.width/2,g.y-=f):c==mxConstants.DIRECTION_SOUTH?(g.x+=e.geometry.width/2,g.y+=e.geometry.height+f):(g.x=c==mxConstants.DIRECTION_WEST?
-g.x-f:g.x+(e.geometry.width+f),g.y+=e.geometry.height/2);f=this.view.getState(this.model.getParent(a));var e=this.view.scale,p=this.view.translate,m=p.x*e,p=p.y*e;null!=f&&this.model.isVertex(f.cell)&&(m=f.x,p=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);l=l||mxEvent.isControlDown(d)&&!k?null:this.getConnectVertexTargetAt(a,m+g.x*e,p+g.y*e);this.model.isAncestor(l,a)&&(l=null);for(f=l;null!=f;){if(this.isCellLocked(f)){l=null;break}f=
-this.model.getParent(f)}null!=l&&(f=this.view.getState(a),e=this.view.getState(l),null!=f&&null!=e&&mxUtils.intersects(f,e)&&(l=null));if(k=(!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d))&&!b||k)c==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=c==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2;null==l||this.isCellConnectable(l)||this.isSwimlane(l)||(b=this.getModel().getParent(l),this.getModel().isVertex(b)&&
-this.isCellConnectable(b)&&(l=b));if(l==a||this.model.isEdge(l)||!this.isCellConnectable(l)&&!this.isSwimlane(l))l=null;b=[];this.model.beginUpdate();try{var n=null!=l&&this.isSwimlane(l);f=n?null:l;if(null==f&&k){for(var e=null!=q?q:a,v=this.getCellGeometry(e);null!=v&&v.relative;)e=this.getModel().getParent(e),v=this.getCellGeometry(e);e=this.getCompositeParent(e);f=this.duplicateCells([e],!1)[0];v=this.getCellGeometry(f);null!=v&&(v.x=g.x-v.width/2,v.y=g.y-v.height/2);if(n||null!=q)this.addCells([f],
-l,null,null,null,!0),l=null}q=null;null!=this.layoutManager&&(q=this.layoutManager.getLayout(this.model.getParent(a)));var t=mxEvent.isControlDown(d)&&mxEvent.isShiftDown(d)&&k||null==l&&null!=q&&q.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,f,this.createCurrentEdgeStyle());if(null!=t&&this.connectionHandler.insertBeforeSource){var x=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=t.parent;)d=this.model.getParent(d);null!=d&&null!=
-d.parent&&d.parent==t.parent&&(x=d.parent.getIndex(d),this.model.add(d.parent,t,x))}null==l&&null!=f&&null!=q&&null!=a.parent&&q.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(x=a.parent.getIndex(a),this.model.add(a.parent,f,x));null!=t&&b.push(t);null==l&&null!=f&&b.push(f);null==f&&null!=t&&t.geometry.setTerminalPoint(g,!1);null!=t&&this.fireEvent(new mxEventObject("cellsInserted","cells",[t]))}finally{this.model.endUpdate()}return b};
-Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.sanitizeHtml(this.getLabel(f)),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&c.push(f);return c.join(" ")};
+g.x-f:g.x+(e.geometry.width+f),g.y+=e.geometry.height/2);var p=this.view.getState(this.model.getParent(a));f=this.view.scale;var m=this.view.translate,e=m.x*f,m=m.y*f;null!=p&&this.model.isVertex(p.cell)&&(e=p.x,m=p.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(g.x+=a.parent.geometry.x,g.y+=a.parent.geometry.y);var n=l||mxEvent.isControlDown(d)&&!k?null:this.getCellAt(e+g.x*f,m+g.y*f);this.model.isAncestor(n,a)&&(n=null);for(l=n;null!=l;){if(this.isCellLocked(l)){n=null;break}l=this.model.getParent(l)}null!=
+n&&(l=this.view.getState(a),p=this.view.getState(n),null!=l&&null!=p&&mxUtils.intersects(l,p)&&(n=null));var v=!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||k;v&&(c==mxConstants.DIRECTION_NORTH?g.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?g.y+=a.geometry.height/2:g.x=c==mxConstants.DIRECTION_WEST?g.x-a.geometry.width/2:g.x+a.geometry.width/2);null==n||this.isCellConnectable(n)||this.isSwimlane(n)||(k=this.getModel().getParent(n),this.getModel().isVertex(k)&&this.isCellConnectable(k)&&
+(n=k));if(n==a||this.model.isEdge(n)||!this.isCellConnectable(n)&&!this.isSwimlane(n))n=null;var u=[],x=null!=n&&this.isSwimlane(n),y=x?null:n;k=mxUtils.bind(this,function(e){this.model.beginUpdate();try{if(null==y&&v){for(var f=null!=e?e:a,m=this.getCellGeometry(f);null!=m&&m.relative;)f=this.getModel().getParent(f),m=this.getCellGeometry(f);f=this.getCompositeParent(f);y=this.duplicateCells([f],!1)[0];m=this.getCellGeometry(y);null!=m&&(m.x=g.x-m.width/2,m.y=g.y-m.height/2);if(x||null!=e)this.addCells([y],
+n,null,null,null,!0),n=null}e=null;null!=this.layoutManager&&(e=this.layoutManager.getLayout(this.model.getParent(a)));var p=mxEvent.isControlDown(d)&&mxEvent.isShiftDown(d)&&v||null==n&&null!=e&&e.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,y,this.createCurrentEdgeStyle());if(null!=p&&this.connectionHandler.insertBeforeSource){for(var k=null,f=a;null!=f.parent&&null!=f.geometry&&f.geometry.relative&&f.parent!=p.parent;)f=this.model.getParent(f);null!=f&&null!=
+f.parent&&f.parent==p.parent&&(k=f.parent.getIndex(f),this.model.add(f.parent,p,k))}null==n&&null!=y&&null!=e&&null!=a.parent&&e.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&(k=a.parent.getIndex(a),this.model.add(a.parent,y,k));null!=p&&u.push(p);null==n&&null!=y&&u.push(y);null==y&&null!=p&&p.geometry.setTerminalPoint(g,!1);null!=p&&this.fireEvent(new mxEventObject("cellsInserted","cells",[p]))}finally{this.model.endUpdate()}if(null!=b)b(u);else return u});if(null!=q&&null==y&&v)q(e+
+g.x*f,m+g.y*f,k);else return k()};Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.sanitizeHtml(this.getLabel(f)),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&c.push(f);return c.join(" ")};
Graph.prototype.convertValueToString=function(a){var c=this.model.getValue(a);if(null!=c&&"object"==typeof c){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),f=a,d=null;null==d&&null!=f;)null!=f.value&&"object"==typeof f.value&&(d=f.hasAttribute(c)?null!=f.getAttribute(c)?f.getAttribute(c):"":null),f=this.model.getParent(f);return d||""}return c.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};
Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getCellStyle=function(a){var c=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(c[mxConstants.STYLE_HORIZONTAL]=!f.horizontal))}return c};
@@ -2526,12 +2527,12 @@ f){var n=this.getCellGeometry(l);null!=n&&(n=n.clone(),n.width+=c,d.setGeometry(
TableLayout.prototype.getSize=function(a,c){for(var f=0,d=0;d<a.length;d++)if(!this.isVertexIgnored(a[d])){var k=this.graph.getCellGeometry(a[d]);null!=k&&(f+=c?k.width:k.height)}return f};TableLayout.prototype.getRowLayout=function(a,c){for(var f=this.graph.model.getChildCells(a,!0),d=this.graph.getActualStartSize(a,!0),k=this.getSize(f,!0),l=c-d.x-d.width,q=[],d=d.x,b=0;b<f.length;b++){var e=this.graph.getCellGeometry(f[b]);null!=e&&(d+=e.width*l/k,q.push(Math.round(d)))}return q};
TableLayout.prototype.layoutRow=function(a,c,f,d){var k=this.graph.getModel(),l=k.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var q=a.x,b=0;null!=c&&(c=c.slice(),c.splice(0,0,a.x));for(var e=0;e<l.length;e++){var g=this.graph.getCellGeometry(l[e]);null!=g&&(g=g.clone(),g.y=a.y,g.height=f-a.y-a.height,null!=c?(g.x=c[e],g.width=c[e+1]-g.x,e==l.length-1&&e<c.length-2&&(g.width=d-g.x-a.x-a.width)):(g.x=q,q+=g.width,e==l.length-1?g.width=d-a.x-a.width-b:b+=g.width),k.setGeometry(l[e],g))}return b};
TableLayout.prototype.execute=function(a){if(null!=a){var c=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),k="1"==mxUtils.getValue(d,"resizeLastRow","0"),l="1"==mxUtils.getValue(d,"resizeLast","0"),d="1"==mxUtils.getValue(d,"fixedRows","0"),q=this.graph.getModel(),b=0;q.beginUpdate();try{var e=f.height-c.y-c.height,g=f.width-c.x-c.width,p=q.getChildCells(a,!0),m=this.getSize(p,!1);if(0<e&&0<g&&0<p.length&&0<m){if(k){var n=this.graph.getCellGeometry(p[p.length-
-1]);null!=n&&(n=n.clone(),n.height=e-m+n.height,q.setGeometry(p[p.length-1],n))}for(var v=l?null:this.getRowLayout(p[0],g),t=c.y,x=0;x<p.length;x++)n=this.graph.getCellGeometry(p[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=g,n.y=Math.round(t),t=k||d?t+n.height:t+n.height/m*e,n.height=Math.round(t)-n.y,q.setGeometry(p[x],n)),b=Math.max(b,this.layoutRow(p[x],v,n.height,g));d&&e<m&&(f=f.clone(),f.height=t+c.height,q.setGeometry(a,f));l&&g<b+Graph.minTableColumnWidth&&(f=f.clone(),f.width=b+c.width+c.x+
+1]);null!=n&&(n=n.clone(),n.height=e-m+n.height,q.setGeometry(p[p.length-1],n))}for(var v=l?null:this.getRowLayout(p[0],g),u=c.y,x=0;x<p.length;x++)n=this.graph.getCellGeometry(p[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=g,n.y=Math.round(u),u=k||d?u+n.height:u+n.height/m*e,n.height=Math.round(u)-n.y,q.setGeometry(p[x],n)),b=Math.max(b,this.layoutRow(p[x],v,n.height,g));d&&e<m&&(f=f.clone(),f.height=u+c.height,q.setGeometry(a,f));l&&g<b+Graph.minTableColumnWidth&&(f=f.clone(),f.width=b+c.width+c.x+
Graph.minTableColumnWidth,q.setGeometry(a,f))}}finally{q.endUpdate()}}};
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){b=null!=b?b:!0;var e=this.getState(a);null!=e&&b&&this.graph.model.isEdge(e.cell)&&null!=e.style&&1!=e.style[mxConstants.STYLE_CURVED]&&!e.invalid&&this.updateLineJumps(e)&&this.graph.cellRenderer.redraw(e,!1,this.isRendering());e=c.apply(this,
arguments);null!=e&&b&&this.graph.model.isEdge(e.cell)&&null!=e.style&&1!=e.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(e);return e};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return f.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
-1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var e=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(b,e,d){var f=new mxPoint(e,d);f.type=b;c.push(f);f=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==f||f.type!=b||f.x!=e||f.y!=d},f=.5*this.scale,e=!1,c=[],t=0;t<b.length-1;t++){for(var l=
-b[t+1],k=b[t],q=[],z=b[t+2];t<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,z.x,z.y,l.x,l.y)<1*this.scale*this.scale;)l=z,t++,z=b[t+2];for(var e=d(0,k.x,k.y)||e,C=0;C<this.validEdges.length;C++){var A=this.validEdges[C],D=A.absolutePoints;if(null!=D&&mxUtils.intersects(a,A)&&"1"!=A.style.noJump)for(A=0;A<D.length-1;A++){for(var G=D[A+1],F=D[A],z=D[A+2];A<D.length-2&&mxUtils.ptSegDistSq(F.x,F.y,z.x,z.y,G.x,G.y)<1*this.scale*this.scale;)G=z,A++,z=D[A+2];z=mxUtils.intersection(k.x,k.y,l.x,l.y,F.x,F.y,G.x,
+1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var e=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(b,e,d){var f=new mxPoint(e,d);f.type=b;c.push(f);f=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==f||f.type!=b||f.x!=e||f.y!=d},f=.5*this.scale,e=!1,c=[],u=0;u<b.length-1;u++){for(var l=
+b[u+1],k=b[u],q=[],z=b[u+2];u<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,z.x,z.y,l.x,l.y)<1*this.scale*this.scale;)l=z,u++,z=b[u+2];for(var e=d(0,k.x,k.y)||e,C=0;C<this.validEdges.length;C++){var A=this.validEdges[C],D=A.absolutePoints;if(null!=D&&mxUtils.intersects(a,A)&&"1"!=A.style.noJump)for(A=0;A<D.length-1;A++){for(var G=D[A+1],F=D[A],z=D[A+2];A<D.length-2&&mxUtils.ptSegDistSq(F.x,F.y,z.x,z.y,G.x,G.y)<1*this.scale*this.scale;)G=z,A++,z=D[A+2];z=mxUtils.intersection(k.x,k.y,l.x,l.y,F.x,F.y,G.x,
G.y);if(null!=z&&(Math.abs(z.x-k.x)>f||Math.abs(z.y-k.y)>f)&&(Math.abs(z.x-l.x)>f||Math.abs(z.y-l.y)>f)&&(Math.abs(z.x-F.x)>f||Math.abs(z.y-F.y)>f)&&(Math.abs(z.x-G.x)>f||Math.abs(z.y-G.y)>f)){G=z.x-k.x;F=z.y-k.y;z={distSq:G*G+F*F,x:z.x,y:z.y};for(G=0;G<q.length;G++)if(q[G].distSq>z.distSq){q.splice(G,0,z);z=null;break}null==z||0!=q.length&&q[q.length-1].x===z.x&&q[q.length-1].y===z.y||q.push(z)}}}for(A=0;A<q.length;A++)e=d(1,q[A].x,q[A].y)||e}z=b[b.length-1];e=d(0,z.x,z.y)||e}a.routedPoints=c;return e}return!1};
var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,d=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,
"jumpStyle","none"),g=!0,p=null,l=null,q=[],z=null;a.begin();for(var C=0;C<this.state.routedPoints.length;C++){var A=this.state.routedPoints[C],D=new mxPoint(A.x/this.scale,A.y/this.scale);0==C?D=b[0]:C==this.state.routedPoints.length-1&&(D=b[b.length-1]);var G=!1;if(null!=p&&1==A.type){var F=this.state.routedPoints[C+1],A=F.x/this.scale-D.x,F=F.y/this.scale-D.y,A=A*A+F*F;null==z&&(z=new mxPoint(D.x-p.x,D.y-p.y),l=Math.sqrt(z.x*z.x+z.y*z.y),0<l?(z.x=z.x*d/l,z.y=z.y*d/l):z=null);A>d*d&&0<l&&(A=p.x-
@@ -2557,28 +2558,28 @@ this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.sketch&&(a+="sket
(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};
Graph.prototype.updateCellStyles=function(a,b,e){this.model.beginUpdate();try{for(var c=0;c<e.length;c++)if(this.model.isVertex(e[c])||this.model.isEdge(e[c])){this.setCellStyles(a,null,[e[c]]);var d=this.getCellStyle(e[c])[a];b!=(null==d?mxConstants.NONE:d)&&this.setCellStyles(a,b,[e[c]])}}finally{this.model.endUpdate()}};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?
mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.createCellLookup=function(a,b){b=null!=b?b:{};for(var e=0;e<a.length;e++){var c=a[e];b[mxObjectIdentity.get(c)]=c.getId();for(var d=this.model.getChildCount(c),f=0;f<d;f++)this.createCellLookup([this.model.getChildAt(c,f)],b)}return b};Graph.prototype.createCellMapping=function(a,b,e){e=null!=e?e:{};for(var c in a){var d=b[c];null==e[d]&&(e[d]=a[c].getId()||
-"")}return e};Graph.prototype.importGraphModel=function(a,b,e,c){b=null!=b?b:0;e=null!=e?e:0;var d=new mxCodec(a.ownerDocument),f=new mxGraphModel;d.decode(a,f);a=[];var d={},g={},m=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),d));if(null!=m){var u=this.createCellLookup([f.root]),m=m.slice();this.model.beginUpdate();try{if(1!=m.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<m.length;f++){var p=this.model.getChildren(this.moveCells([m[f]],b,e,!1,this.model.getRoot())[0]);
-null!=p&&(a=a.concat(p))}else a=this.moveCells(f.getChildren(m[0]),b,e,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId();if(null!=a&&(this.createCellMapping(d,u,g),this.updateCustomLinks(g,a),c)){this.isGridEnabled()&&(b=this.snap(b),e=this.snap(e));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,b-n.x,e-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},e=this.cloneCells(a,null,b),
-c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(var f=new mxCodec,g=new mxGraphModel,m=g.getChildAt(g.getRoot(),0),d=0;d<e.length;d++){g.add(m,e[d]);var u=this.view.getState(a[d]);if(null!=u){var p=this.getCellGeometry(e[d]);null!=p&&p.relative&&!this.model.isEdge(a[d])&&null==c.get(this.model.getParent(a[d]))&&(p.offset=null,p.relative=!1,p.x=u.x/u.view.scale-u.view.translate.x,p.y=u.y/u.view.scale-u.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),
+"")}return e};Graph.prototype.importGraphModel=function(a,b,e,c){b=null!=b?b:0;e=null!=e?e:0;var d=new mxCodec(a.ownerDocument),f=new mxGraphModel;d.decode(a,f);a=[];var d={},g={},m=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),d));if(null!=m){var t=this.createCellLookup([f.root]),m=m.slice();this.model.beginUpdate();try{if(1!=m.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<m.length;f++){var p=this.model.getChildren(this.moveCells([m[f]],b,e,!1,this.model.getRoot())[0]);
+null!=p&&(a=a.concat(p))}else a=this.moveCells(f.getChildren(m[0]),b,e,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId();if(null!=a&&(this.createCellMapping(d,t,g),this.updateCustomLinks(g,a),c)){this.isGridEnabled()&&(b=this.snap(b),e=this.snap(e));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,b-n.x,e-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},e=this.cloneCells(a,null,b),
+c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(var f=new mxCodec,g=new mxGraphModel,m=g.getChildAt(g.getRoot(),0),d=0;d<e.length;d++){g.add(m,e[d]);var t=this.view.getState(a[d]);if(null!=t){var p=this.getCellGeometry(e[d]);null!=p&&p.relative&&!this.model.isEdge(a[d])&&null==c.get(this.model.getParent(a[d]))&&(p.offset=null,p.relative=!1,p.x=t.x/t.view.scale-t.view.translate.x,p.y=t.y/t.view.scale-t.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),
e);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){if(null!=a&&this.model.getParent(a)!=this.model.getRoot()&&!this.model.isEdge(a)){var e=this.getCurrentCellStyle(a,b)[mxConstants.STYLE_SHAPE];return e==mxConstants.SHAPE_SWIMLANE||"table"==e}return!1};var q=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(a){var b=this.model.getParent(a);if(null!=b){var e=this.getCurrentCellStyle(b);if(null!=e.expand)return"0"!=e.expand}return q.apply(this,arguments)&&(null==b||
-!this.isTable(b))};var b=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,e,c,d,f,g,m,u){null==u&&(u=this.model.getParent(a),this.isTable(u)||this.isTableRow(u))&&(u=this.getCellAt(g,m,null,!0,!1));b.apply(this,[a,e,c,d,f,g,m,u])};var e=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)e.apply(this,arguments);else{var d=this.getSelectionCell(),f=null,g=[],m=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(g.push(b),
-b==d)f=g.length-1;else if(a&&null==d&&0<g.length||null!=f&&a&&g.length>f||!a&&0<f)return;for(var e=0;e<this.model.getChildCount(b);e++)m(this.model.getChildAt(b,e))});m(this.model.root);0<g.length&&(f=null!=f?mxUtils.mod(f+(a?1:-1),g.length):0,this.setSelectionCell(g[f]))}};var g=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,e,c,d,f,m){m=null!=m?m:{};if(this.isTable(d)){for(var u=[],p=0;p<a.length;p++)this.isTable(a[p])?u=u.concat(this.model.getChildCells(a[p],!0).reverse()):u.push(a[p]);
-a=u}this.model.beginUpdate();try{u=[];for(p=0;p<a.length;p++)if(null!=d&&this.isTableRow(a[p])){var n=this.model.getParent(a[p]),t=this.getCellGeometry(a[p]);this.isTable(n)&&u.push(n);if(null!=n&&null!=t&&this.isTable(n)&&this.isTable(d)&&(c||n!=d)){if(!c){var R=this.getCellGeometry(n);null!=R&&(R=R.clone(),R.height-=t.height,this.model.setGeometry(n,R))}R=this.getCellGeometry(d);null!=R&&(R=R.clone(),R.height+=t.height,this.model.setGeometry(d,R));var B=this.model.getChildCells(d,!0);if(0<B.length){var l=
+!this.isTable(b))};var b=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,e,c,d,f,g,m,t){null==t&&(t=this.model.getParent(a),this.isTable(t)||this.isTableRow(t))&&(t=this.getCellAt(g,m,null,!0,!1));b.apply(this,[a,e,c,d,f,g,m,t])};var e=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)e.apply(this,arguments);else{var d=this.getSelectionCell(),f=null,g=[],m=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(g.push(b),
+b==d)f=g.length-1;else if(a&&null==d&&0<g.length||null!=f&&a&&g.length>f||!a&&0<f)return;for(var e=0;e<this.model.getChildCount(b);e++)m(this.model.getChildAt(b,e))});m(this.model.root);0<g.length&&(f=null!=f?mxUtils.mod(f+(a?1:-1),g.length):0,this.setSelectionCell(g[f]))}};var g=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,e,c,d,f,m){m=null!=m?m:{};if(this.isTable(d)){for(var t=[],p=0;p<a.length;p++)this.isTable(a[p])?t=t.concat(this.model.getChildCells(a[p],!0).reverse()):t.push(a[p]);
+a=t}this.model.beginUpdate();try{t=[];for(p=0;p<a.length;p++)if(null!=d&&this.isTableRow(a[p])){var n=this.model.getParent(a[p]),u=this.getCellGeometry(a[p]);this.isTable(n)&&t.push(n);if(null!=n&&null!=u&&this.isTable(n)&&this.isTable(d)&&(c||n!=d)){if(!c){var R=this.getCellGeometry(n);null!=R&&(R=R.clone(),R.height-=u.height,this.model.setGeometry(n,R))}R=this.getCellGeometry(d);null!=R&&(R=R.clone(),R.height+=u.height,this.model.setGeometry(d,R));var B=this.model.getChildCells(d,!0);if(0<B.length){var l=
c?this.cloneCell(a[p]):a[p],k=this.model.getChildCells(l,!0),v=this.model.getChildCells(B[0],!0),x=v.length-k.length;if(0<x)for(var K=0;K<x;K++){var y=this.cloneCell(k[k.length-1]);null!=y&&(y.value="",this.model.add(l,y))}else if(0>x)for(K=0;K>x;K--)this.model.remove(k[k.length+K-1]);k=this.model.getChildCells(l,!0);for(K=0;K<v.length;K++){var L=this.getCellGeometry(v[K]),ia=this.getCellGeometry(k[K]);null!=L&&null!=ia&&(ia=ia.clone(),ia.width=L.width,this.model.setGeometry(k[K],ia))}}}}for(var H=
-g.apply(this,arguments),p=0;p<u.length;p++)!c&&this.model.contains(u[p])&&0==this.model.getChildCount(u[p])&&this.model.remove(u[p]);c&&this.updateCustomLinks(this.createCellMapping(m,this.createCellLookup(a)),H)}finally{this.model.endUpdate()}return H};var p=Graph.prototype.removeCells;Graph.prototype.removeCells=function(a,b){var e=[];this.model.beginUpdate();try{for(var c=0;c<a.length;c++)if(this.isTableCell(a[c])){var d=this.model.getParent(a[c]),f=this.model.getParent(d);1==this.model.getChildCount(d)&&
-1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f)&&e.push(f):this.labelChanged(a[c],"")}else{if(this.isTableRow(a[c])&&(f=this.model.getParent(a[c]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f))){for(var g=this.model.getChildCells(f,!0),m=0,u=0;u<g.length;u++)0<=mxUtils.indexOf(a,g[u])&&m++;m==g.length&&e.push(f)}e.push(a[c])}e=p.apply(this,[e,b])}finally{this.model.endUpdate()}return e};Graph.prototype.updateCustomLinks=function(a,b){for(var e=0;e<b.length;e++)null!=
+g.apply(this,arguments),p=0;p<t.length;p++)!c&&this.model.contains(t[p])&&0==this.model.getChildCount(t[p])&&this.model.remove(t[p]);c&&this.updateCustomLinks(this.createCellMapping(m,this.createCellLookup(a)),H)}finally{this.model.endUpdate()}return H};var p=Graph.prototype.removeCells;Graph.prototype.removeCells=function(a,b){var e=[];this.model.beginUpdate();try{for(var c=0;c<a.length;c++)if(this.isTableCell(a[c])){var d=this.model.getParent(a[c]),f=this.model.getParent(d);1==this.model.getChildCount(d)&&
+1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f)&&e.push(f):this.labelChanged(a[c],"")}else{if(this.isTableRow(a[c])&&(f=this.model.getParent(a[c]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(e,f))){for(var g=this.model.getChildCells(f,!0),m=0,t=0;t<g.length;t++)0<=mxUtils.indexOf(a,g[t])&&m++;m==g.length&&e.push(f)}e.push(a[c])}e=p.apply(this,[e,b])}finally{this.model.endUpdate()}return e};Graph.prototype.updateCustomLinks=function(a,b){for(var e=0;e<b.length;e++)null!=
b[e]&&this.updateCustomLinksForCell(a,b[e])};Graph.prototype.updateCustomLinksForCell=function(a,b){};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var e=mxUtils.getValue(a.style,"points",null);if(null!=e){var c=[];try{for(var d=JSON.parse(e),e=0;e<d.length;e++){var f=d[e];c.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(wa){}return c}if(null!=a.shape&&null!=a.shape.bounds){f=a.shape.direction;
d=a.shape.bounds;e=a.shape.scale;c=d.width/e;d=d.height/e;if(f==mxConstants.DIRECTION_NORTH||f==mxConstants.DIRECTION_SOUTH)f=c,c=d,d=f;e=a.shape.getConstraints(a.style,c,d);if(null!=e)return e;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.getCurrentCellStyle(a),b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==
mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a])}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),e=0,c=0;c<b;c++){var d=this.model.getChildAt(a,c);this.model.isVertex(d)&&(d=this.getCellGeometry(d),null==d||d.relative||e++)}return 0<e||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a,b,e){for(var c=this.getCurrentCellStyle(a),d=!0,f=!0,g=0;g<b.length&&f;g++)d=d&&this.isTable(b[g]),
f=f&&this.isTableRow(b[g]);return("1"!=mxUtils.getValue(c,"part","0")||this.isContainer(a))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(a))&&!this.isTableRow(a)&&(!this.isTable(a)||f||d)};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,
arguments);if(b&&null!=a&&null!=this.layoutManager){var e=this.model.getParent(a);null!=e&&(e=this.layoutManager.getLayout(e),null!=e&&e.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a,b){var e=this.getModel(),c=[];e.beginUpdate();
-try{for(var d=0;d<a.length;d++){var f=a[d];if(e.isEdge(f)){var g=e.getTerminal(f,!0),m=e.getTerminal(f,!1);e.setTerminal(f,m,!0);e.setTerminal(f,g,!1);var u=e.getGeometry(f);if(null!=u){u=u.clone();null!=u.points&&u.points.reverse();var p=u.getTerminalPoint(!0),n=u.getTerminalPoint(!1);u.setTerminalPoint(p,!1);u.setTerminalPoint(n,!0);e.setGeometry(f,u);var t=this.view.getState(f),B=this.view.getState(g),l=this.view.getState(m);if(null!=t){var R=null!=B?this.getConnectionConstraint(t,B,!0):null,k=
-null!=l?this.getConnectionConstraint(t,l,!1):null;this.setConnectionConstraint(f,g,!0,k);this.setConnectionConstraint(f,m,!1,R)}c.push(f)}}else if(e.isVertex(f)&&(u=this.getCellGeometry(f),null!=u)){if(!this.isTable(f)&&!this.isTableRow(f)&&!this.isTableCell(f)){u=u.clone();u.x+=u.width/2-u.height/2;u.y+=u.height/2-u.width/2;var v=u.width;u.width=u.height;u.height=v;e.setGeometry(f,u)}var x=this.view.getState(f);if(null!=x){var K=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,
+try{for(var d=0;d<a.length;d++){var f=a[d];if(e.isEdge(f)){var g=e.getTerminal(f,!0),m=e.getTerminal(f,!1);e.setTerminal(f,m,!0);e.setTerminal(f,g,!1);var t=e.getGeometry(f);if(null!=t){t=t.clone();null!=t.points&&t.points.reverse();var p=t.getTerminalPoint(!0),n=t.getTerminalPoint(!1);t.setTerminalPoint(p,!1);t.setTerminalPoint(n,!0);e.setGeometry(f,t);var u=this.view.getState(f),B=this.view.getState(g),k=this.view.getState(m);if(null!=u){var l=null!=B?this.getConnectionConstraint(u,B,!0):null,R=
+null!=k?this.getConnectionConstraint(u,k,!1):null;this.setConnectionConstraint(f,g,!0,R);this.setConnectionConstraint(f,m,!1,l)}c.push(f)}}else if(e.isVertex(f)&&(t=this.getCellGeometry(f),null!=t)){if(!this.isTable(f)&&!this.isTableRow(f)&&!this.isTableCell(f)){t=t.clone();t.x+=t.width/2-t.height/2;t.y+=t.height/2-t.width/2;var v=t.width;t.width=t.height;t.height=v;e.setGeometry(f,t)}var x=this.view.getState(f);if(null!=x){var K=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,
mxConstants.DIRECTION_NORTH],y=mxUtils.getValue(x.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,K[mxUtils.mod(mxUtils.indexOf(K,y)+(b?-1:1),K.length)],[f])}c.push(f)}}}finally{e.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var m=Graph.prototype.processChange;
Graph.prototype.processChange=function(a){if(a instanceof mxGeometryChange&&(this.isTableCell(a.cell)||this.isTableRow(a.cell))&&(null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))){var b=a.cell;this.isTableCell(b)&&(b=this.model.getParent(b));this.isTableRow(b)&&(b=this.model.getParent(b));var e=this.view.getState(b);null!=e&&null!=e.shape&&(this.view.invalidate(b),e.shape.bounds=null)}m.apply(this,arguments);a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&
"object"==typeof a.cell.value&&this.invalidateDescendantsWithPlaceholders(a.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(a){a=this.model.getDescendants(a);if(0<a.length)for(var b=0;b<a.length;b++){var e=this.view.getState(a[b]);null!=e&&null!=e.shape&&null!=e.shape.stencil&&this.stencilHasPlaceholders(e.shape.stencil)?this.removeStateForCell(a[b]):this.isReplacePlaceholders(a[b])&&this.view.invalidate(a[b],!1,!1)}};Graph.prototype.replaceElement=function(a,b){for(var e=a.ownerDocument.createElement(null!=
b?b:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)e.setAttribute(attr.nodeName,attr.nodeValue);e.innerHTML=a.innerHTML;a.parentNode.replaceChild(e,a)};Graph.prototype.processElements=function(a,b){if(null!=a)for(var e=a.getElementsByTagName("*"),c=0;c<e.length;c++)b(e[c])};Graph.prototype.updateLabelElements=function(a,b,e){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var f=this.convertValueToString(a[d]);
-if(null!=f&&0<f.length){c.innerHTML=f;for(var g=c.getElementsByTagName(null!=e?e:"*"),u=0;u<g.length;u++)b(g[u]);c.innerHTML!=f&&this.cellLabelChanged(a[d],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,e){b=Graph.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&&
+if(null!=f&&0<f.length){c.innerHTML=f;for(var g=c.getElementsByTagName(null!=e?e:"*"),t=0;t<g.length;t++)b(g[t]);c.innerHTML!=f&&this.cellLabelChanged(a[d],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,e){b=Graph.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&&
d.hasAttribute(c)){this.setAttributeForCell(d,c,b);break}d=this.model.getParent(d)}var f=a.value.cloneNode(!0);f.setAttribute("label",b);b=f}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var b=new mxDictionary,e=0;e<a.length;e++)b.put(a[e],!0);for(var c=[],e=0;e<a.length;e++){var d=this.model.getParent(a[e]);null==d||b.get(d)||(b.put(d,!0),c.push(d))}for(e=0;e<c.length;e++)if(d=this.view.getState(c[e]),
null!=d&&(this.model.isEdge(d.cell)||this.model.isVertex(d.cell))&&this.isCellDeletable(d.cell)&&this.isTransparentState(d)){for(var f=!0,g=0;g<this.model.getChildCount(d.cell)&&f;g++)b.get(this.model.getChildAt(d.cell,g))||(f=!1);f&&a.push(d.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var b=[],e=0;e<a.length;e++)this.isCellDeletable(a[e])&&this.isTransparentState(this.view.getState(a[e]))&&b.push(a[e]);a=b;mxGraph.prototype.removeCellsAfterUngroup.apply(this,
arguments)};Graph.prototype.setLinkForCell=function(a,b){this.setAttributeForCell(a,"link",b)};Graph.prototype.setTooltipForCell=function(a,b){this.setAttributeForCell(a,"tooltip",b)};Graph.prototype.getAttributeForCell=function(a,b,e){a=null!=a.value&&"object"===typeof a.value?a.value.getAttribute(b):null;return null!=a?a:e};Graph.prototype.setAttributeForCell=function(a,b,e){var c;null!=a.value&&"object"==typeof a.value?c=a.value.cloneNode(!0):(c=mxUtils.createXmlDocument().createElement("UserObject"),
@@ -2590,33 +2591,33 @@ this.getInsertPoint(),c=this.snap(Math.round(Math.max(e.x,b.x/a.scale-a.translat
this.container.clientHeight/2)/this.view.scale-this.view.translate.y-a.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-a.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-a.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,b,e){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=e&&this.model.isEdge(e.cell)){c.style=
"edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var d=this.view.getRelativePoint(e,a,b);c.geometry.x=Math.round(1E4*d.x)/1E4;c.geometry.y=Math.round(d.y);c.geometry.offset=new mxPoint(0,0);var d=this.view.getPoint(e,c.geometry),f=this.view.scale;c.geometry.offset=new mxPoint(Math.round((a-d.x)/f),Math.round((b-d.y)/f))}else d=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=
40,c.geometry.height=20,c.geometry.x=Math.round(a/this.view.scale)-d.x-(null!=e?e.origin.x:0),c.geometry.y=Math.round(b/this.view.scale)-d.y-(null!=e?e.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=e?e.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};Graph.prototype.addClickHandler=function(a,b,e){var c=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");
-if(null!=a)for(var e=0;e<a.length;e++){var c=this.getAbsoluteUrl(a[e].getAttribute("href"));null!=c&&(a[e].setAttribute("rel",this.linkRelation),a[e].setAttribute("href",c),null!=b&&mxEvent.addGestureListeners(a[e],null,null,b))}});this.model.addListener(mxEvent.CHANGE,c);c();var d=this.container.style.cursor,f=this.getTolerance(),g=this,u={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var b=
+if(null!=a)for(var e=0;e<a.length;e++){var c=this.getAbsoluteUrl(a[e].getAttribute("href"));null!=c&&(a[e].setAttribute("rel",this.linkRelation),a[e].setAttribute("href",c),null!=b&&mxEvent.addGestureListeners(a[e],null,null,b))}});this.model.addListener(mxEvent.CHANGE,c);c();var d=this.container.style.cursor,f=this.getTolerance(),g=this,t={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var b=
a.sourceState;if(null==b||null==g.getLinkForCell(b.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,b,e){return null==g.getLinkForCell(a.cell)}),b=g.view.getState(a);b!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=b,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=g.container.scrollLeft;this.scrollTop=g.container.scrollTop;null==this.currentLink&&
"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(b)},mouseMove:function(a,b){if(g.isMouseDown){if(null!=this.currentLink){var e=Math.abs(this.startX-b.getGraphX()),c=Math.abs(this.startY-b.getGraphY());(e>f||c>f)&&this.clear()}}else{for(e=b.getSource();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null!=e?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(b,!0,this.currentState),(null==
-this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,c){for(var d=c.getSource(),u=c.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(u)||mxEvent.isMiddleMouseButton(u))&&
-!mxEvent.isPopupTrigger(u)||mxEvent.isTouchEvent(u))&&(null!=this.currentLink?(d=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==b||b(u,this.currentLink),mxEvent.isConsumed(u)||(u=mxEvent.isMiddleMouseButton(u)?"_blank":d?g.linkTarget:"_top",g.openLink(this.currentLink,u),c.consume())):null!=e&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-
-c.getGraphY())<f&&e(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(u);mxEvent.addListener(document,
-"mouseleave",function(a){u.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var e=0;e<a.length;e++)this.isTableCell(a[e])&&(a[e]=this.model.getParent(a[e]));a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,f=[];c.beginUpdate();try{for(var g=this.cloneCells(a,!1,null,!0),e=0;e<a.length;e++){var u=c.getParent(a[e]),m=this.moveCells([g[e]],d,d,!1)[0];f.push(m);if(b)c.add(u,g[e]);else{var p=u.getIndex(a[e]);c.add(u,g[e],
-p+1)}if(this.isTable(u)){var n=this.getCellGeometry(g[e]),t=this.getCellGeometry(u);null!=n&&null!=t&&(t=t.clone(),t.height+=n.height,c.setGeometry(u,t))}}}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,e){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),d=[],f=0;f<c.length;f++)d.push(c[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(f=
+this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,c){for(var d=c.getSource(),t=c.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(t)||mxEvent.isMiddleMouseButton(t))&&
+!mxEvent.isPopupTrigger(t)||mxEvent.isTouchEvent(t))&&(null!=this.currentLink?(d=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==b||b(t,this.currentLink),mxEvent.isConsumed(t)||(t=mxEvent.isMiddleMouseButton(t)?"_blank":d?g.linkTarget:"_top",g.openLink(this.currentLink,t),c.consume())):null!=e&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-
+c.getGraphY())<f&&e(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(t);mxEvent.addListener(document,
+"mouseleave",function(a){t.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var e=0;e<a.length;e++)this.isTableCell(a[e])&&(a[e]=this.model.getParent(a[e]));a=this.model.getTopmostCells(a);var c=this.getModel(),d=this.gridSize,f=[];c.beginUpdate();try{for(var g=this.cloneCells(a,!1,null,!0),e=0;e<a.length;e++){var t=c.getParent(a[e]),m=this.moveCells([g[e]],d,d,!1)[0];f.push(m);if(b)c.add(t,g[e]);else{var p=t.getIndex(a[e]);c.add(t,g[e],
+p+1)}if(this.isTable(t)){var n=this.getCellGeometry(g[e]),u=this.getCellGeometry(t);null!=n&&null!=u&&(u=u.clone(),u.height+=n.height,c.setGeometry(t,u))}}}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,e){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),d=[],f=0;f<c.length;f++)d.push(c[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(f=
a.length-1;0<=f;f--)if(0==f||a[f]!=d[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",e);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),e=[],c=0;c<b.length;c++)e.push(b[c]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==e.length+1)for(c=b.length-
1;0<=c;c--)if(b[c]!=e[c-1]){for(b=b[c].getElementsByTagName("a");0<b.length;){for(e=b[0].parentNode;null!=b[0].firstChild;)e.insertBefore(b[0].firstChild,b[0]);e.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),e=this.getCurrentCellStyle(a);return!this.isTableCell(a)&&!this.isTableRow(a)&&(b||"0"!=mxUtils.getValue(e,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==
-e[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var e=[],c=null,d=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var u=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,u):u,d=null!=d?Math.min(d,u):u;e.push(g)}}if(2<e.length){e.sort(function(b,e){return a?b.x-e.x:b.y-e.y});g=this.view.translate;u=this.view.scale;d=d/u-(a?g.x:g.y);c=c/u-(a?g.x:
+e[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var e=[],c=null,d=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var t=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,t):t,d=null!=d?Math.min(d,t):t;e.push(g)}}if(2<e.length){e.sort(function(b,e){return a?b.x-e.x:b.y-e.y});g=this.view.translate;t=this.view.scale;d=d/t-(a?g.x:g.y);c=c/t-(a?g.x:
g.y);this.getModel().beginUpdate();try{for(var m=(c-d)/(e.length-1),c=d,f=1;f<e.length-1;f++){var p=this.view.getState(this.model.getParent(e[f].cell)),n=this.getCellGeometry(e[f].cell),c=c+m;null!=n&&null!=p&&(n=n.clone(),a?n.x=Math.round(c-n.width/2)-p.origin.x:n.y=Math.round(c-n.height/2)-p.origin.y,this.getModel().setGeometry(e[f].cell,n))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};
-Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,e,c,d,f,g,u,m,p){var n=this.useCssTransforms;n&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;e=null!=e?e:0;d=null!=d?d:!0;f=null!=f?f:!0;g=null!=g?g:!0;var t=f||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==t)throw Error(mxResources.get("drawingEmpty"));
-var B=this.view.scale,l=mxUtils.createXmlDocument(),k=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"svg"):l.createElement("svg");null!=a&&(null!=k.style?k.style.backgroundColor=a:k.setAttribute("style","background-color:"+a));null==l.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/B;var v=Math.max(1,Math.ceil(t.width*a)+2*e)+(p?5:
-0),x=Math.max(1,Math.ceil(t.height*a)+2*e)+(p?5:0);k.setAttribute("version","1.1");k.setAttribute("width",v+"px");k.setAttribute("height",x+"px");k.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+v+" "+x);l.appendChild(k);var K=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"g"):l.createElement("g");k.appendChild(K);var y=this.createSvgCanvas(K);y.foOffset=d?-.5:0;y.textOffset=d?-.5:0;y.imageOffset=d?-.5:0;y.translate(Math.floor((e/b-t.x)/B),Math.floor((e/b-t.y)/B));var L=document.createElement("div"),
-H=y.getAlternateText;y.getAlternateText=function(a,b,e,c,d,f,g,u,m,p,aa,n,t){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(L.innerHTML=f,f=mxUtils.extractTextWithWhitespace(L.childNodes));for(var Na=Math.ceil(2*c/this.state.fontSize),B=[],l=0,k=0;(0==Na||l<Na)&&k<f.length;){var v=f.charCodeAt(k);if(10==v||13==v){if(0<l)break}else B.push(f.charAt(k)),255>v&&l++;k++}B.length<f.length&&1<f.length-B.length&&(f=mxUtils.trim(B.join(""))+"...");return f}catch(Va){return H.apply(this,
-arguments)}else return H.apply(this,arguments)};var R=this.backgroundImage;if(null!=R){b=B/b;var O=this.view.translate,A=new mxRectangle(O.x*b,O.y*b,R.width*b,R.height*b);mxUtils.intersects(t,A)&&y.image(O.x,O.y,R.width,R.height,R.src,!0)}y.scale(a);y.textEnabled=g;u=null!=u?u:this.createSvgImageExport();var q=u.drawCellState,z=u.getLinkForCellState;u.getLinkForCellState=function(a,b){var e=z.apply(this,arguments);return null==e||a.view.graph.isCustomLink(e)?null:e};u.drawCellState=function(a,b){for(var e=
-a.view.graph,c=e.isCellSelected(a.cell),d=e.model.getParent(a.cell);!f&&!c&&null!=d;)c=e.isCellSelected(d),d=e.model.getParent(d);(f||c)&&q.apply(this,arguments)};u.drawState(this.getView().getState(this.model.root),y);this.updateSvgLinks(k,m,!0);this.addForeignObjectWarning(y,k);return k}finally{n&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if(0<b.getElementsByTagName("foreignObject").length){var e=a.createElement("switch"),
+Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,e,c,d,f,g,t,m,p){var n=this.useCssTransforms;n&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;e=null!=e?e:0;d=null!=d?d:!0;f=null!=f?f:!0;g=null!=g?g:!0;var u=f||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==u)throw Error(mxResources.get("drawingEmpty"));
+var B=this.view.scale,k=mxUtils.createXmlDocument(),l=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=l.style?l.style.backgroundColor=a:l.setAttribute("style","background-color:"+a));null==k.createElementNS?(l.setAttribute("xmlns",mxConstants.NS_SVG),l.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):l.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/B;var v=Math.max(1,Math.ceil(u.width*a)+2*e)+(p?5:
+0),x=Math.max(1,Math.ceil(u.height*a)+2*e)+(p?5:0);l.setAttribute("version","1.1");l.setAttribute("width",v+"px");l.setAttribute("height",x+"px");l.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+v+" "+x);k.appendChild(l);var K=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");l.appendChild(K);var y=this.createSvgCanvas(K);y.foOffset=d?-.5:0;y.textOffset=d?-.5:0;y.imageOffset=d?-.5:0;y.translate(Math.floor((e/b-u.x)/B),Math.floor((e/b-u.y)/B));var L=document.createElement("div"),
+H=y.getAlternateText;y.getAlternateText=function(a,b,e,c,d,f,g,t,m,p,aa,n,u){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(L.innerHTML=f,f=mxUtils.extractTextWithWhitespace(L.childNodes));for(var Na=Math.ceil(2*c/this.state.fontSize),B=[],l=0,k=0;(0==Na||l<Na)&&k<f.length;){var v=f.charCodeAt(k);if(10==v||13==v){if(0<l)break}else B.push(f.charAt(k)),255>v&&l++;k++}B.length<f.length&&1<f.length-B.length&&(f=mxUtils.trim(B.join(""))+"...");return f}catch(Va){return H.apply(this,
+arguments)}else return H.apply(this,arguments)};var R=this.backgroundImage;if(null!=R){b=B/b;var O=this.view.translate,A=new mxRectangle(O.x*b,O.y*b,R.width*b,R.height*b);mxUtils.intersects(u,A)&&y.image(O.x,O.y,R.width,R.height,R.src,!0)}y.scale(a);y.textEnabled=g;t=null!=t?t:this.createSvgImageExport();var q=t.drawCellState,z=t.getLinkForCellState;t.getLinkForCellState=function(a,b){var e=z.apply(this,arguments);return null==e||a.view.graph.isCustomLink(e)?null:e};t.drawCellState=function(a,b){for(var e=
+a.view.graph,c=e.isCellSelected(a.cell),d=e.model.getParent(a.cell);!f&&!c&&null!=d;)c=e.isCellSelected(d),d=e.model.getParent(d);(f||c)&&q.apply(this,arguments)};t.drawState(this.getView().getState(this.model.root),y);this.updateSvgLinks(l,m,!0);this.addForeignObjectWarning(y,l);return l}finally{n&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if(0<b.getElementsByTagName("foreignObject").length){var e=a.createElement("switch"),
c=a.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var d=a.createElement("a");d.setAttribute("transform","translate(0,-5)");null==d.setAttributeNS||b.ownerDocument!=document&&null==document.documentMode?(d.setAttribute("xlink:href",Graph.foreignObjectWarningLink),d.setAttribute("target","_blank")):(d.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),d.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=
a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);e.appendChild(c);d.appendChild(f);e.appendChild(d);b.appendChild(e)}};Graph.prototype.updateSvgLinks=function(a,b,e){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++){var d=a[c].getAttribute("href");null==d&&(d=a[c].getAttribute("xlink:href"));null!=d&&(null!=b&&/^https?:\/\//.test(d)?a[c].setAttribute("target",
b):e&&this.isCustomLink(d)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,e){for(;null!=
a&&a.nodeName!=b;){if(a==e)return null;a=a.parentNode}return a};Graph.prototype.getParentByNames=function(a,b,e){for(;null!=a&&!(0<=mxUtils.indexOf(b,a.nodeName));){if(a==e)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var e=document.createRange();e.selectNode(a);b.removeAllRanges();b.addRange(e)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),e=
-b.createRange(),e.setEndPoint("StartToStart",a),e.select())};Graph.prototype.deleteCells=function(a,b){var e=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var d=this.model.getParent(a[c]);if(this.isTable(d)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(d);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(d,g))}}var u=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=
-u)for(e=[],c=0;c<u.length;c++)this.model.contains(u[c])&&(this.model.isVertex(u[c])||this.model.isEdge(u[c]))&&e.push(u[c])}return e};Graph.prototype.insertTableColumn=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=0;if(this.isTableCell(a))var f=e.getParent(a),c=e.getParent(f),d=mxUtils.indexOf(e.getChildCells(f,!0),a);else this.isTableRow(a)?c=e.getParent(a):a=e.getChildCells(c,!0)[0],b||(d=e.getChildCells(a,!0).length-1);for(var g=e.getChildCells(c,!0),u=Graph.minTableColumnWidth,
-f=0;f<g.length;f++){var m=e.getChildCells(g[f],!0)[d],p=e.cloneCell(m,!1),n=this.getCellGeometry(p);p.value=null;if(null!=n){var u=n.width,t=this.getCellGeometry(g[f]);null!=t&&(n.height=t.height)}e.add(g[f],p,d+(b?0:1))}var B=this.getCellGeometry(c);null!=B&&(B=B.clone(),B.width+=u,e.setGeometry(c,B))}finally{e.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=a;if(this.isTableCell(a))d=e.getParent(a),c=e.getParent(d);else if(this.isTableRow(a))c=
-e.getParent(a);else var f=e.getChildCells(c,!0),d=f[b?0:f.length-1];var g=e.getChildCells(d,!0),u=c.getIndex(d),d=e.cloneCell(d,!1);d.value=null;var m=this.getCellGeometry(d);if(null!=m){for(f=0;f<g.length;f++){a=e.cloneCell(g[f],!1);d.insert(a);a.value=null;var p=this.getCellGeometry(a);null!=p&&(p.height=m.height)}e.add(c,d,u+(b?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,e.setGeometry(c,n))}}finally{e.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=
-this.getModel();b.beginUpdate();try{var e=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(e=b.getParent(c));var d=b.getChildCells(e,!0);if(0==d.length)b.remove(e);else{this.isTableRow(c)||(c=d[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(e);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<d.length;c++){var u=b.getChildCells(d[c],!0)[g];b.remove(u);var m=this.getCellGeometry(u);null!=m&&(a=Math.max(a,m.width))}var p=this.getCellGeometry(e);
+b.createRange(),e.setEndPoint("StartToStart",a),e.select())};Graph.prototype.deleteCells=function(a,b){var e=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var d=this.model.getParent(a[c]);if(this.isTable(d)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(d);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(d,g))}}var t=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=
+t)for(e=[],c=0;c<t.length;c++)this.model.contains(t[c])&&(this.model.isVertex(t[c])||this.model.isEdge(t[c]))&&e.push(t[c])}return e};Graph.prototype.insertTableColumn=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=0;if(this.isTableCell(a))var f=e.getParent(a),c=e.getParent(f),d=mxUtils.indexOf(e.getChildCells(f,!0),a);else this.isTableRow(a)?c=e.getParent(a):a=e.getChildCells(c,!0)[0],b||(d=e.getChildCells(a,!0).length-1);for(var g=e.getChildCells(c,!0),t=Graph.minTableColumnWidth,
+f=0;f<g.length;f++){var m=e.getChildCells(g[f],!0)[d],p=e.cloneCell(m,!1),n=this.getCellGeometry(p);p.value=null;if(null!=n){var t=n.width,u=this.getCellGeometry(g[f]);null!=u&&(n.height=u.height)}e.add(g[f],p,d+(b?0:1))}var B=this.getCellGeometry(c);null!=B&&(B=B.clone(),B.width+=t,e.setGeometry(c,B))}finally{e.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var e=this.getModel();e.beginUpdate();try{var c=a,d=a;if(this.isTableCell(a))d=e.getParent(a),c=e.getParent(d);else if(this.isTableRow(a))c=
+e.getParent(a);else var f=e.getChildCells(c,!0),d=f[b?0:f.length-1];var g=e.getChildCells(d,!0),t=c.getIndex(d),d=e.cloneCell(d,!1);d.value=null;var m=this.getCellGeometry(d);if(null!=m){for(f=0;f<g.length;f++){a=e.cloneCell(g[f],!1);d.insert(a);a.value=null;var p=this.getCellGeometry(a);null!=p&&(p.height=m.height)}e.add(c,d,t+(b?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,e.setGeometry(c,n))}}finally{e.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=
+this.getModel();b.beginUpdate();try{var e=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(e=b.getParent(c));var d=b.getChildCells(e,!0);if(0==d.length)b.remove(e);else{this.isTableRow(c)||(c=d[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(e);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<d.length;c++){var t=b.getChildCells(d[c],!0)[g];b.remove(t);var m=this.getCellGeometry(t);null!=m&&(a=Math.max(a,m.width))}var p=this.getCellGeometry(e);
null!=p&&(p=p.clone(),p.width-=a,b.setGeometry(e,p))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var e=a,c=a;this.isTableCell(a)&&(a=c=b.getParent(a));this.isTableRow(a)&&(e=b.getParent(c));var d=b.getChildCells(e,!0);if(1>=d.length)b.remove(e);else{this.isTableRow(c)||(c=d[d.length-1]);b.remove(c);a=0;var f=this.getCellGeometry(c);null!=f&&(a=f.height);var g=this.getCellGeometry(e);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(e,
g))}}finally{b.endUpdate()}};Graph.prototype.insertRow=function(a,b){for(var e=a.tBodies[0],c=e.rows[0].cells,d=0,f=0;f<c.length;f++)var g=c[f].getAttribute("colspan"),d=d+(null!=g?parseInt(g):1);e=e.insertRow(b);for(f=0;f<d;f++)mxUtils.br(e.insertCell(-1));return e.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var e=a.tHead;if(null!=e)for(var c=0;c<e.rows.length;c++){var d=document.createElement("th");e.rows[c].appendChild(d);
mxUtils.br(d)}e=a.tBodies[0];for(c=0;c<e.rows.length;c++)d=e.rows[c].insertCell(b),mxUtils.br(d);return e.rows[0].cells[0<=b?b:e.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var e=a.tBodies[0].rows,c=0;c<e.length;c++)e[c].cells.length>b&&e[c].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var e=document.createElement("div");e.innerHTML=
@@ -2627,15 +2628,15 @@ this.isEnabled()&&(this.container.style.cursor="default");return b};var b=!1,e=!
(this.popupMenuHandler.popupTrigger||!c&&!mxEvent.isMouseEvent(d.getEvent())&&(e&&null==d.getCell()&&this.isSelectionEmpty()||b&&this.isCellSelected(d.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",
this.textarea)};mxCellEditor.prototype.alignText=function(a,b){var e=null!=b&&mxEvent.isShiftDown(b);if(e||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(a){e||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=
window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var b=[],e=0,c=a.rangeCount;e<c;++e)b.push(a.getRangeAt(e));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,e=a.length;b<e;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(qa){}};var v=mxCellRenderer.prototype.initializeLabel;
-mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));v.apply(this,arguments)};var t=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?t.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=
+mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));v.apply(this,arguments)};var u=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?u.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=
!1;var x=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,b){a=this.graph.getStartEditingCell(a,b);x.apply(this,arguments);var e=this.graph.view.getState(a);this.textarea.className=null!=e&&1==e.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var e=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(e)&&null!=
c&&c.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var y=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,e){e.originalNode=a;a=a.firstChild;for(var c=e.firstChild;null!=a&&null!=c;)b(a,
c),a=a.nextSibling,c=c.nextSibling;return e}function e(a,b){if(null!=a)if(b.originalNode!=a)c(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var d=a.nextSibling;null==b?c(a):(e(a,b),b=b.nextSibling);a=d}}function c(a){for(var b=a.firstChild;null!=b;){var e=b.nextSibling;c(b);b=e}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&
(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}y.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?e(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),e=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(b?
m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),d=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&
-mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,u=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&u.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&u.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+
-"px";this.textarea.style.textDecoration=u.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=d;this.textarea.style.padding="0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==
+mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,t=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&t.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&t.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+
+"px";this.textarea.style.textDecoration=t.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=d;this.textarea.style.padding="0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==
this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var m=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(m=mxUtils.replaceTrailingNewlines(m,"<div><br></div>"));m=this.graph.sanitizeHtml(b?m.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):m,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+
"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);
this.switchSelectionState=e;this.resize()}};var E=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=a){var e=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*e;this.bounds.height=60*e;var c=null!=a.text?a.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,
@@ -2652,12 +2653,12 @@ b.width,this.graph.model.setGeometry(c,d)))}};var D=mxSelectionCellsHandler.prot
mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=G.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var F=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(a){var b=F.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+
this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return this.graph.isRecursiveVertexResize(a)&&!mxEvent.isControlDown(b.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,
"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var I=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return I.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):
-this.bounds};var J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var u=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||u.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
+this.bounds};var J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var t=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||t.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
function(){var a=0;this.graph.isTableRow(this.state.cell)?a=1:this.graph.isTableCell(this.state.cell)&&(a=2);return a};var K=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return K.apply(this,arguments).grow(-this.getSelectionBorderInset())};var B=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=B.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var b=this.graph,
-e=b.model,c=this.state,d=this.selectionBorder,f=this;null==a&&(a=[]);var g=b.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<g.length){for(var u=b.view.getCellStates(e.getChildCells(g[0].cell,!0)),e=0;e<u.length;e++)mxUtils.bind(this,function(e){var g=u[e],m=e<u.length-1?u[e+1]:null,p=new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=d.isDashed;p.svgStrokeTolerance++;p=new mxHandle(g,"col-resize",null,p);p.tableHandle=!0;var n=0;p.shape.node.parentNode.insertBefore(p.shape.node,
-p.shape.node.parentNode.firstChild);p.redraw=function(){if(null!=this.shape&&null!=this.state.shape){var a=b.getActualStartSize(c.cell);this.shape.stroke=0==n?mxConstants.NONE:d.stroke;this.shape.bounds.x=this.state.x+this.state.width+n*this.graph.view.scale;this.shape.bounds.width=1;this.shape.bounds.y=c.y+(e==u.length-1?0:a.y*this.graph.view.scale);this.shape.bounds.height=c.height-(e==u.length-1?0:(a.height+a.y)*this.graph.view.scale);this.shape.redraw()}};var t=!1;p.setPosition=function(a,e,c){n=
-Math.max(Graph.minTableColumnWidth-a.width,e.x-a.x-a.width);t=mxEvent.isShiftDown(c.getEvent());null==m||t||(n=Math.min((m.x+m.width-g.x-g.width)/b.view.scale-Graph.minTableColumnWidth,n))};p.execute=function(a){if(0!=n)b.setTableColumnWidth(this.state.cell,n,t);else if(!f.blockDelayedSelection){var e=b.getCellAt(a.getGraphX(),a.getGraphY())||c.cell;b.graphHandler.selectCellForEvent(e,a)}n=0};p.reset=function(){n=0};a.push(p)})(e);for(e=0;e<g.length;e++)mxUtils.bind(this,function(e){e=g[e];var u=
-new mxLine(new mxRectangle,mxConstants.NONE,1);u.isDashed=d.isDashed;u.svgStrokeTolerance++;e=new mxHandle(e,"row-resize",null,u);e.tableHandle=!0;var m=0;e.shape.node.parentNode.insertBefore(e.shape.node,e.shape.node.parentNode.firstChild);e.redraw=function(){null!=this.shape&&null!=this.state.shape&&(this.shape.stroke=0==m?mxConstants.NONE:d.stroke,this.shape.bounds.x=this.state.x,this.shape.bounds.width=this.state.width,this.shape.bounds.y=this.state.y+this.state.height+m*this.graph.view.scale,
+e=b.model,c=this.state,d=this.selectionBorder,f=this;null==a&&(a=[]);var g=b.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<g.length){for(var t=b.view.getCellStates(e.getChildCells(g[0].cell,!0)),e=0;e<t.length;e++)mxUtils.bind(this,function(e){var g=t[e],m=e<t.length-1?t[e+1]:null,p=new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=d.isDashed;p.svgStrokeTolerance++;p=new mxHandle(g,"col-resize",null,p);p.tableHandle=!0;var n=0;p.shape.node.parentNode.insertBefore(p.shape.node,
+p.shape.node.parentNode.firstChild);p.redraw=function(){if(null!=this.shape&&null!=this.state.shape){var a=b.getActualStartSize(c.cell);this.shape.stroke=0==n?mxConstants.NONE:d.stroke;this.shape.bounds.x=this.state.x+this.state.width+n*this.graph.view.scale;this.shape.bounds.width=1;this.shape.bounds.y=c.y+(e==t.length-1?0:a.y*this.graph.view.scale);this.shape.bounds.height=c.height-(e==t.length-1?0:(a.height+a.y)*this.graph.view.scale);this.shape.redraw()}};var u=!1;p.setPosition=function(a,e,c){n=
+Math.max(Graph.minTableColumnWidth-a.width,e.x-a.x-a.width);u=mxEvent.isShiftDown(c.getEvent());null==m||u||(n=Math.min((m.x+m.width-g.x-g.width)/b.view.scale-Graph.minTableColumnWidth,n))};p.execute=function(a){if(0!=n)b.setTableColumnWidth(this.state.cell,n,u);else if(!f.blockDelayedSelection){var e=b.getCellAt(a.getGraphX(),a.getGraphY())||c.cell;b.graphHandler.selectCellForEvent(e,a)}n=0};p.reset=function(){n=0};a.push(p)})(e);for(e=0;e<g.length;e++)mxUtils.bind(this,function(e){e=g[e];var t=
+new mxLine(new mxRectangle,mxConstants.NONE,1);t.isDashed=d.isDashed;t.svgStrokeTolerance++;e=new mxHandle(e,"row-resize",null,t);e.tableHandle=!0;var m=0;e.shape.node.parentNode.insertBefore(e.shape.node,e.shape.node.parentNode.firstChild);e.redraw=function(){null!=this.shape&&null!=this.state.shape&&(this.shape.stroke=0==m?mxConstants.NONE:d.stroke,this.shape.bounds.x=this.state.x,this.shape.bounds.width=this.state.width,this.shape.bounds.y=this.state.y+this.state.height+m*this.graph.view.scale,
this.shape.bounds.height=1,this.shape.redraw())};e.setPosition=function(a,b,e){m=Math.max(Graph.minTableRowHeight-a.height,b.y-a.y-a.height)};e.execute=function(a){if(0!=m)b.setTableRowHeight(this.state.cell,m,!mxEvent.isShiftDown(a.getEvent()));else if(!f.blockDelayedSelection){var e=b.getCellAt(a.getGraphX(),a.getGraphY())||c.cell;b.graphHandler.selectCellForEvent(e,a)}m=0};e.reset=function(){m=0};a.push(e)})(e)}}return null!=a?a.reverse():null};var L=mxVertexHandler.prototype.setHandlesVisible;
mxVertexHandler.prototype.setHandlesVisible=function(a){L.apply(this,arguments);if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.visibility=a?"":"hidden";if(null!=this.cornerHandles)for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.visibility=a?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var a=this.graph.model;if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);
this.moveHandles=null}this.moveHandles=[];for(b=0;b<a.getChildCount(this.state.cell);b++)mxUtils.bind(this,function(b){if(null!=b&&a.isVertex(b.cell)){var e=mxUtils.createImage(Editor.rowMoveImage);e.style.position="absolute";e.style.cursor="pointer";e.style.width="7px";e.style.height="4px";e.style.padding="4px 2px 4px 2px";e.rowState=b;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(a){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(a)&&this.graph.isCellSelected(b.cell)||
@@ -2681,8 +2682,8 @@ function(a){return!mxEvent.isShiftDown(a.getEvent())};if(Graph.touchStyle){if(mx
function(a){var b=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(b)||mxEvent.isPopupTrigger(b)&&(null==a.getState()||mxEvent.isControlDown(b)||mxEvent.isShiftDown(b))};var fa=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,b){fa.apply(this,arguments);mxEvent.isTouchEvent(b.getEvent())&&this.graph.isCellSelected(b.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var b=
a.getEvent();return mxEvent.isLeftMouseButton(b)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b))||this.usePopupTrigger&&mxEvent.isPopupTrigger(b)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&
(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(a,b){if(this.cancelled)this.cancelled=!1,b.consume();else{var e=null!=this.div&&"none"!=this.div.style.display,c=null,d=null,f=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(c=this.first.x,d=this.first.y,f=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-d)/this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(f=this.graph.snap(f),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(f)<
-this.graph.tolerance&&(f=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(e){if(mxEvent.isAltDown(b.getEvent())&&this.graph.isToggleEvent(b.getEvent())){var f=new mxRectangle(this.x,this.y,this.width,this.height),u=this.graph.getCells(f.x,f.y,f.width,f.height);this.graph.removeSelectionCells(u)}else if(this.isSpaceEvent(b)){this.graph.model.beginUpdate();try{for(u=this.graph.getCellsBeyond(c,d,this.graph.getDefaultParent(),!0,!0),e=0;e<u.length;e++)if(this.graph.isCellMovable(u[e])){var m=
-this.graph.view.getState(u[e]),p=this.graph.getCellGeometry(u[e]);null!=m&&null!=p&&(p=p.clone(),p.translate(f,g),this.graph.model.setGeometry(u[e],p))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,b.getEvent());b.consume()}}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var e=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);e.x-=c.x;e.y-=c.y;
+this.graph.tolerance&&(f=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(e){if(mxEvent.isAltDown(b.getEvent())&&this.graph.isToggleEvent(b.getEvent())){var f=new mxRectangle(this.x,this.y,this.width,this.height),t=this.graph.getCells(f.x,f.y,f.width,f.height);this.graph.removeSelectionCells(t)}else if(this.isSpaceEvent(b)){this.graph.model.beginUpdate();try{for(t=this.graph.getCellsBeyond(c,d,this.graph.getDefaultParent(),!0,!0),e=0;e<t.length;e++)if(this.graph.isCellMovable(t[e])){var m=
+this.graph.view.getState(t[e]),p=this.graph.getCellGeometry(t[e]);null!=m&&null!=p&&(p=p.clone(),p.translate(f,g),this.graph.model.setGeometry(t[e],p))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,b.getEvent());b.consume()}}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var e=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);e.x-=c.x;e.y-=c.y;
var c=b.getX()+e.x,e=b.getY()+e.y,d=this.first.x-c,f=this.first.y-e,g=this.graph.tolerance;if(null!=this.div||Math.abs(d)>g||Math.abs(f)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,e),this.isSpaceEvent(b)?(c=this.x+this.width,e=this.y+this.height,d=this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(this.width=this.graph.snap(this.width/d)*d,this.height=this.graph.snap(this.height/d)*d,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=e-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
@@ -2711,15 +2712,15 @@ null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&thi
this.moveHandles[a]&&null!=this.moveHandles[a].parentNode&&this.moveHandles[a].parentNode.removeChild(this.moveHandles[a]);this.moveHandles=null}if(null!=this.cornerHandles){for(a=0;a<this.cornerHandles.length;a++)null!=this.cornerHandles[a]&&null!=this.cornerHandles[a].node&&null!=this.cornerHandles[a].node.parentNode&&this.cornerHandles[a].node.parentNode.removeChild(this.cornerHandles[a].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),
this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var oa=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(oa.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&
null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+Editor.hintOffset)+"px"}};var W=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){W.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var Z=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=
-function(){Z.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function f(){mxActor.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function q(){mxActor.call(this)}function b(){mxCylinder.call(this)}function e(){mxActor.call(this)}function g(){mxActor.call(this)}function p(){mxActor.call(this)}function m(){mxActor.call(this)}function n(){mxActor.call(this)}function v(){mxActor.call(this)}function t(){mxActor.call(this)}
+function(){Z.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function f(){mxActor.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function q(){mxActor.call(this)}function b(){mxCylinder.call(this)}function e(){mxActor.call(this)}function g(){mxActor.call(this)}function p(){mxActor.call(this)}function m(){mxActor.call(this)}function n(){mxActor.call(this)}function v(){mxActor.call(this)}function u(){mxActor.call(this)}
function x(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,x.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,x.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,x.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,x.prototype.quadTo);this.originalCurveTo=
this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,x.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,x.prototype.arcTo)}function y(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function z(){mxActor.call(this)}function C(){mxActor.call(this)}function A(){mxActor.call(this)}function D(){mxRectangleShape.call(this)}function G(){mxRectangleShape.call(this)}function F(){mxCylinder.call(this)}function I(){mxShape.call(this)}function J(){mxShape.call(this)}
-function u(){mxEllipse.call(this)}function K(){mxShape.call(this)}function B(){mxShape.call(this)}function L(){mxRectangleShape.call(this)}function O(){mxShape.call(this)}function H(){mxShape.call(this)}function S(){mxShape.call(this)}function fa(){mxShape.call(this)}function ga(){mxShape.call(this)}function ba(){mxCylinder.call(this)}function Y(){mxCylinder.call(this)}function X(){mxRectangleShape.call(this)}function ca(){mxDoubleEllipse.call(this)}function ha(){mxDoubleEllipse.call(this)}function ea(){mxArrowConnector.call(this);
+function t(){mxEllipse.call(this)}function K(){mxShape.call(this)}function B(){mxShape.call(this)}function L(){mxRectangleShape.call(this)}function O(){mxShape.call(this)}function H(){mxShape.call(this)}function S(){mxShape.call(this)}function fa(){mxShape.call(this)}function ga(){mxShape.call(this)}function ba(){mxCylinder.call(this)}function Y(){mxCylinder.call(this)}function X(){mxRectangleShape.call(this)}function ca(){mxDoubleEllipse.call(this)}function ha(){mxDoubleEllipse.call(this)}function ea(){mxArrowConnector.call(this);
this.spacing=0}function U(){mxArrowConnector.call(this);this.spacing=0}function da(){mxActor.call(this)}function Q(){mxRectangleShape.call(this)}function M(){mxActor.call(this)}function la(){mxActor.call(this)}function P(){mxActor.call(this)}function T(){mxActor.call(this)}function ja(){mxActor.call(this)}function sa(){mxActor.call(this)}function N(){mxActor.call(this)}function oa(){mxActor.call(this)}function W(){mxActor.call(this)}function Z(){mxActor.call(this)}function R(){mxEllipse.call(this)}
-function ia(){mxEllipse.call(this)}function ka(){mxEllipse.call(this)}function qa(){mxRhombus.call(this)}function ra(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function xa(){mxActor.call(this)}function ya(){mxActor.call(this)}function ma(){mxActor.call(this)}function ta(){mxConnector.call(this)}function Ba(a,b,e,c,d,f,g,u,m,p){g+=m;var aa=c.clone();c.x-=d*(2*g+m);c.y-=f*(2*g+m);d*=g+m;f*=g+m;return function(){a.ellipse(aa.x-
+function ia(){mxEllipse.call(this)}function ka(){mxEllipse.call(this)}function qa(){mxRhombus.call(this)}function ra(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function xa(){mxActor.call(this)}function ya(){mxActor.call(this)}function ma(){mxActor.call(this)}function ta(){mxConnector.call(this)}function Ba(a,b,e,c,d,f,g,t,m,p){g+=m;var aa=c.clone();c.x-=d*(2*g+m);c.y-=f*(2*g+m);d*=g+m;f*=g+m;return function(){a.ellipse(aa.x-
d-g,aa.y-f-g,2*g,2*g);p?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxSwimlane);a.prototype.getLabelBounds=function(a){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};a.prototype.paintVertexShape=function(a,b,e,c,d){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),a.translate(-b,-e));this.paintForeground(a,
b,e,c,d)};a.prototype.paintForeground=function(a,b,e,c,d){if(null!=this.state){var f=this.flipH,g=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var aa=f,f=g,g=aa;a.rotate(-this.getShapeRotation(),f,g,b+c/2,e+d/2);s=this.scale;b=this.bounds.x/s;e=this.bounds.y/s;c=this.bounds.width/s;d=this.bounds.height/s;this.paintTableForeground(a,b,e,c,d)}};a.prototype.paintTableForeground=function(a,b,e,c,d){var f=this.state.view.graph,g=f.getActualStartSize(this.state.cell),
-aa=f.model.getChildCells(this.state.cell,!0);if(0<aa.length){var u="0"!=mxUtils.getValue(this.state.style,"rowLines","1"),m="0"!=mxUtils.getValue(this.state.style,"columnLines","1");if(u)for(u=1;u<aa.length;u++){var p=f.getCellGeometry(aa[u]);null!=p&&(a.begin(),a.moveTo(b+g.x,e+p.y),a.lineTo(b+c-g.width,e+p.y),a.end(),a.stroke())}if(m)for(c=f.model.getChildCells(aa[0],!0),u=1;u<c.length;u++)p=f.getCellGeometry(c[u]),null!=p&&(a.begin(),a.moveTo(b+p.x+g.x,e+g.y),a.lineTo(b+p.x+g.x,e+d-g.height),a.end(),
+aa=f.model.getChildCells(this.state.cell,!0);if(0<aa.length){var t="0"!=mxUtils.getValue(this.state.style,"rowLines","1"),m="0"!=mxUtils.getValue(this.state.style,"columnLines","1");if(t)for(t=1;t<aa.length;t++){var p=f.getCellGeometry(aa[t]);null!=p&&(a.begin(),a.moveTo(b+g.x,e+p.y),a.lineTo(b+c-g.width,e+p.y),a.end(),a.stroke())}if(m)for(c=f.model.getChildCells(aa[0],!0),t=1;t<c.length;t++)p=f.getCellGeometry(c[t]),null!=p&&(a.begin(),a.moveTo(b+p.x+g.x,e+g.y),a.lineTo(b+p.x+g.x,e+d-g.height),a.end(),
a.stroke())}};mxCellRenderer.registerShape("table",a);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.darkOpacity=0;c.prototype.darkOpacity2=0;c.prototype.paintVertexShape=function(a,b,e,c,d){var f=Math.max(0,Math.min(c,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),aa=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));
a.translate(b,e);a.begin();a.moveTo(0,0);a.lineTo(c-f,0);a.lineTo(c,f);a.lineTo(c,d);a.lineTo(f,d);a.lineTo(0,d-f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-f,0),a.lineTo(c,f),a.lineTo(f,f),a.close(),a.fill()),0!=aa&&(a.setFillAlpha(Math.abs(aa)),a.setFillColor(0>aa?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(f,f),a.lineTo(f,d),a.lineTo(0,d-
f),a.close(),a.fill()),a.begin(),a.moveTo(f,d),a.lineTo(f,f),a.lineTo(0,0),a.moveTo(f,f),a.lineTo(c,f),a.end(),a.stroke())};c.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",c);var ua=Math.tan(mxUtils.toRadians(30)),na=(.5-ua)/2;mxUtils.extend(f,mxActor);f.prototype.size=20;f.prototype.redrawPath=function(a,b,e,c,d){b=
@@ -2736,10 +2737,10 @@ a.end()};mxCellRenderer.registerShape("card",e);mxUtils.extend(g,mxActor);g.prot
d?c*Math.max(0,Math.min(1,d)):Ia.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.isRoundable=function(){return!0};m.prototype.redrawPath=function(a,b,e,c,d){b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));
e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(b,0),new mxPoint(c,0),new mxPoint(c-b,d)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("parallelogram",m);mxUtils.extend(n,mxActor);n.prototype.size=.2;n.prototype.isRoundable=function(){return!0};n.prototype.redrawPath=function(a,b,e,c,d){b=c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,d)],this.isRounded,e,!0)};mxCellRenderer.registerShape("trapezoid",n);mxUtils.extend(v,mxActor);v.prototype.size=.5;v.prototype.redrawPath=function(a,b,e,c,d){a.setFillColor(null);b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,
-[new mxPoint(c,0),new mxPoint(b,0),new mxPoint(b,d/2),new mxPoint(0,d/2),new mxPoint(b,d/2),new mxPoint(b,d),new mxPoint(c,d)],this.isRounded,e,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",v);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(a,b,e,c,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=c/5;a.rect(0,0,b,d);a.fillAndStroke();a.rect(2*b,0,b,d);a.fillAndStroke();a.rect(4*b,0,b,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",t);x.prototype.moveTo=
+[new mxPoint(c,0),new mxPoint(b,0),new mxPoint(b,d/2),new mxPoint(0,d/2),new mxPoint(b,d/2),new mxPoint(b,d),new mxPoint(c,d)],this.isRounded,e,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",v);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,b,e,c,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=c/5;a.rect(0,0,b,d);a.fillAndStroke();a.rect(2*b,0,b,d);a.fillAndStroke();a.rect(4*b,0,b,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);x.prototype.moveTo=
function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};x.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};x.prototype.quadTo=function(a,b,e,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=c};x.prototype.curveTo=function(a,b,e,c,d,f){this.originalCurveTo.apply(this.canvas,
arguments);this.lastX=d;this.lastY=f};x.prototype.arcTo=function(a,b,e,c,d,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};x.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var e=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),d=Math.abs(b-this.lastY),f=Math.sqrt(c*c+d*d);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),aa=this.defaultVariation;
-5>g&&(g=5,aa/=3);for(var u=e(a-this.lastX)*c/g,e=e(b-this.lastY)*d/g,c=c/f,d=d/f,f=0;f<g;f++){var m=(Math.random()-.5)*aa;this.originalLineTo.call(this.canvas,u*f+this.lastX-m*d,e*f+this.lastY-m*c)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};x.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;
+5>g&&(g=5,aa/=3);for(var t=e(a-this.lastX)*c/g,e=e(b-this.lastY)*d/g,c=c/f,d=d/f,f=0;f<g;f++){var m=(Math.random()-.5)*aa;this.originalLineTo.call(this.canvas,t*f+this.lastX-m*d,e*f+this.lastY-m*c)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};x.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;
this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Ja=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(a){Ja.apply(this,arguments);null==a.handJiggle&&(a.handJiggle=this.createHandJiggle(a))};var Pa=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(a){Pa.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxShape.prototype.createComicCanvas=function(a){return new x(a,
mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var Qa=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?
"1":"0"))&&Qa.apply(this,arguments)};var Ra=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,e,c,d){if(null==a.handJiggle||a.handJiggle.constructor!=x)Ra.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),
@@ -2748,53 +2749,54 @@ e,b+f,e)):(a.moveTo(b,e),a.lineTo(b+c,e),a.lineTo(b+c,e+d),a.lineTo(b,e+d),a.lin
this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,e=a.height;a=new mxRectangle(a.x,a.y,b,e);var c=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(b*d,e*d));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};y.prototype.paintForeground=function(a,
b,e,c,d){var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*g,d*g));f=Math.round(f);a.begin();a.moveTo(b+f,e);a.lineTo(b+f,e+d);a.moveTo(b+c-f,e);a.lineTo(b+c-f,e+d);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",y);mxUtils.extend(E,mxRectangleShape);
E.prototype.paintBackground=function(a,b,e,c,d){a.setFillColor(mxConstants.NONE);a.rect(b,e,c,d);a.fill()};E.prototype.paintForeground=function(a,b,e,c,d){};mxCellRenderer.registerShape("transparent",E);mxUtils.extend(z,mxHexagon);z.prototype.size=30;z.prototype.position=.5;z.prototype.position2=.5;z.prototype.base=20;z.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};z.prototype.isRoundable=function(){return!0};
-z.prototype.redrawPath=function(a,b,e,c,d){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),u=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,
-[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d-e),new mxPoint(Math.min(c,f+u),d-e),new mxPoint(g,d),new mxPoint(Math.max(0,f),d-e),new mxPoint(0,d-e)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",z);mxUtils.extend(C,mxActor);C.prototype.size=.2;C.prototype.fixedSize=20;C.prototype.isRoundable=function(){return!0};C.prototype.redrawPath=function(a,b,e,c,d){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",
-this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(0,d),new mxPoint(b,d/2)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("step",C);mxUtils.extend(A,mxHexagon);A.prototype.size=.25;A.prototype.isRoundable=function(){return!0};A.prototype.redrawPath=
-function(a,b,e,c,d){b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.5*d),new mxPoint(c-b,d),new mxPoint(b,d),new mxPoint(0,.5*d)],this.isRounded,e,!0)};mxCellRenderer.registerShape("hexagon",A);mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.paintForeground=function(a,
-b,e,c,d){var f=Math.min(c/5,d/5)+1;a.begin();a.moveTo(b+c/2,e+f);a.lineTo(b+c/2,e+d-f);a.moveTo(b+f,e+d/2);a.lineTo(b+c-f,e+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",D);var La=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,e,c,d){La.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&(a.setShadow(!1),La.apply(this,[a,b,e,c,d]))}};mxUtils.extend(G,mxRectangleShape);G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};G.prototype.paintForeground=function(a,b,e,c,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
-f]];if(null!=g){var u=this.style["symbol"+f+"Align"],m=this.style["symbol"+f+"VerticalAlign"],p=this.style["symbol"+f+"Width"],aa=this.style["symbol"+f+"Height"],n=this.style["symbol"+f+"Spacing"]||0,t=this.style["symbol"+f+"VSpacing"]||n,B=this.style["symbol"+f+"ArcSpacing"];null!=B&&(B*=this.getArcSize(c+this.strokewidth,d+this.strokewidth),n+=B,t+=B);var B=b,l=e,B=u==mxConstants.ALIGN_CENTER?B+(c-p)/2:u==mxConstants.ALIGN_RIGHT?B+(c-p-n):B+n,l=m==mxConstants.ALIGN_MIDDLE?l+(d-aa)/2:m==mxConstants.ALIGN_BOTTOM?
-l+(d-aa-t):l+t;a.save();u=new g;u.style=this.style;g.prototype.paintVertexShape.call(u,a,B,l,p,aa);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",G);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,e,c,d,f){f?(a.moveTo(0,0),a.lineTo(c/2,d/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",F);mxUtils.extend(I,mxShape);
-I.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.ellipse(c/4,0,c/2,d/4);a.fillAndStroke();a.begin();a.moveTo(c/2,d/4);a.lineTo(c/2,2*d/3);a.moveTo(c/2,d/3);a.lineTo(0,d/3);a.moveTo(c/2,d/3);a.lineTo(c,d/3);a.moveTo(c/2,2*d/3);a.lineTo(0,d);a.moveTo(c/2,2*d/3);a.lineTo(c,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",I);mxUtils.extend(J,mxShape);J.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};J.prototype.paintBackground=function(a,
-b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(c/6,d/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",J);mxUtils.extend(u,mxEllipse);u.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,e+d);a.lineTo(b+7*c/8,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",u);mxUtils.extend(K,
-mxShape);K.prototype.paintVertexShape=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(c,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(c,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(B,mxShape);B.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};B.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,d/8,c,7*d/8);a.fillAndStroke()};
-B.prototype.paintForeground=function(a,b,e,c,d){a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",B);mxUtils.extend(L,mxRectangleShape);L.prototype.size=40;L.prototype.isHtmlAllowed=function(){return!1};L.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};L.prototype.paintBackground=function(a,b,e,c,
-d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,e,c,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=L&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,b,e,c,f),a.restore()));f<d&&(a.setDashed(!0),a.begin(),a.moveTo(b+c/2,e+f),a.lineTo(b+c/2,e+d),a.end(),a.stroke())};L.prototype.paintForeground=function(a,
-b,e,c,d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,e,c,Math.min(d,f))};mxCellRenderer.registerShape("umlLifeline",L);mxUtils.extend(O,mxShape);O.prototype.width=60;O.prototype.height=30;O.prototype.corner=10;O.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
-"height",this.height)*this.scale))};O.prototype.paintBackground=function(a,b,e,c,d){var f=this.corner,g=Math.min(c,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),u=Math.min(d,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),m=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);m!=mxConstants.NONE&&(a.setFillColor(m),a.rect(b,e,c,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
-mxConstants.NONE?(this.getGradientBounds(a,b,e,c,d),a.setGradient(this.fill,this.gradient,b,e,c,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,e);a.lineTo(b+g,e);a.lineTo(b+g,e+Math.max(0,u-1.5*f));a.lineTo(b+Math.max(0,g-f),e+u);a.lineTo(b,e+u);a.close();a.fillAndStroke();a.begin();a.moveTo(b+g,e);a.lineTo(b+c,e);a.lineTo(b+c,e+d);a.lineTo(b,e+d);a.lineTo(b,e+u);a.stroke()};mxCellRenderer.registerShape("umlFrame",O);mxPerimeter.LifelinePerimeter=function(a,b,e,c){c=L.prototype.size;
-null!=b&&(c=mxUtils.getValue(b.style,"size",c)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;e.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+c,e.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,e,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
-mxPerimeter.BackbonePerimeter=function(a,b,e,c){c=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(c+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return e.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,e.y)));e.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,e.x)),
-a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,e,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",z.prototype.size))*b.view.scale))),b.style),b,e,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,c){var d=m.prototype.size;
-null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,u=a.width,p=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=p*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+u,g+d),new mxPoint(f+u,g+p),new mxPoint(f,g+p-d),new mxPoint(f,g)]):(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+u,g),new mxPoint(f+u-d,g+p),new mxPoint(f,
-g+p),new mxPoint(f+d,g)]);p=a.getCenterX();a=a.getCenterY();a=new mxPoint(p,a);c&&(e.x<f||e.x>f+u?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,e,c){var d=n.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,u=a.width,m=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
-b==mxConstants.DIRECTION_EAST?(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+u-d,g),new mxPoint(f+u,g+m),new mxPoint(f,g+m),new mxPoint(f+d,g)]):b==mxConstants.DIRECTION_WEST?(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+u,g),new mxPoint(f+u-d,g+m),new mxPoint(f+d,g+m),new mxPoint(f,g)]):b==mxConstants.DIRECTION_NORTH?(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g+d),new mxPoint(f+u,g),new mxPoint(f+u,g+m),new mxPoint(f,g+m-d),new mxPoint(f,g+d)]):(d=m*Math.max(0,
-Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+u,g+d),new mxPoint(f+u,g+m-d),new mxPoint(f,g+m),new mxPoint(f,g)]);m=a.getCenterX();a=a.getCenterY();a=new mxPoint(m,a);c&&(e.x<f||e.x>f+u?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,e,c){var d="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=d?C.prototype.fixedSize:C.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,
-"size",f));d&&(f*=b.view.scale);var g=a.x,u=a.y,m=a.width,p=a.height,n=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),u=[new mxPoint(g,u),new mxPoint(g+m-d,u),new mxPoint(g+m,a),new mxPoint(g+m-d,u+p),new mxPoint(g,u+p),new mxPoint(g+d,a),new mxPoint(g,u)]):b==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(m,
-f)):m*Math.max(0,Math.min(1,f)),u=[new mxPoint(g+d,u),new mxPoint(g+m,u),new mxPoint(g+m-d,a),new mxPoint(g+m,u+p),new mxPoint(g+d,u+p),new mxPoint(g,a),new mxPoint(g+d,u)]):b==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),u=[new mxPoint(g,u+d),new mxPoint(n,u),new mxPoint(g+m,u+d),new mxPoint(g+m,u+p),new mxPoint(n,u+p-d),new mxPoint(g,u+p),new mxPoint(g,u+d)]):(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),u=[new mxPoint(g,u),new mxPoint(n,u+
-d),new mxPoint(g+m,u),new mxPoint(g+m,u+p-d),new mxPoint(n,u+p),new mxPoint(g,u+p-d),new mxPoint(g,u)]);n=new mxPoint(n,a);c&&(e.x<g||e.x>g+m?n.y=e.y:n.x=e.x);return mxUtils.getPerimeterPoint(u,n,e)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,e,c){var d=A.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,u=a.width,m=a.height,p=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(p,g),new mxPoint(f+u,g+d),new mxPoint(f+u,g+m-d),new mxPoint(p,g+m),new mxPoint(f,g+m-d),new mxPoint(f,g+d),new mxPoint(p,g)]):(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+u-d,g),new mxPoint(f+u,a),new mxPoint(f+u-d,g+m),new mxPoint(f+d,g+m),new mxPoint(f,a),new mxPoint(f+d,g)]);p=new mxPoint(p,a);c&&(e.x<f||e.x>f+
-u?p.y=e.y:p.x=e.x);return mxUtils.getPerimeterPoint(g,p,e)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(H,mxShape);H.prototype.size=10;H.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,e);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",H);mxUtils.extend(S,mxShape);S.prototype.size=
-10;S.prototype.inset=2;S.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,e);a.begin();a.moveTo(c/2,f+g);a.lineTo(c/2,d);a.end();a.stroke();a.begin();a.moveTo((c-f)/2-g,f/2);a.quadTo((c-f)/2-g,f+g,c/2,f+g);a.quadTo((c+f)/2+g,f+g,(c+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",S);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=
-function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",fa);mxUtils.extend(ga,mxShape);ga.prototype.inset=2;ga.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,e);a.ellipse(0,f,c-2*f,d-2*f);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",
-ga);mxUtils.extend(ba,mxCylinder);ba.prototype.jettyWidth=20;ba.prototype.jettyHeight=10;ba.prototype.redrawPath=function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,u=Math.min(b,d-b),m=Math.min(u+2*b,d-b);f?(a.moveTo(e,u),a.lineTo(g,u),a.lineTo(g,u+b),a.lineTo(e,u+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,
-d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,u+b),a.lineTo(0,u+b),a.lineTo(0,u),a.lineTo(e,u),a.close());a.end()};mxCellRenderer.registerShape("module",ba);mxUtils.extend(Y,mxCylinder);Y.prototype.jettyWidth=32;Y.prototype.jettyHeight=12;Y.prototype.redrawPath=function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,u=.3*d-
-b/2,m=.7*d-b/2;f?(a.moveTo(e,u),a.lineTo(g,u),a.lineTo(g,u+b),a.lineTo(e,u+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,u+b),a.lineTo(0,u+b),a.lineTo(0,u),a.lineTo(e,u),a.close());a.end()};mxCellRenderer.registerShape("component",Y);mxUtils.extend(X,mxRectangleShape);X.prototype.paintForeground=function(a,b,e,c,d){var f=c/2,g=d/2,u=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(b+f,e),new mxPoint(b+c,e+g),new mxPoint(b+f,e+d),new mxPoint(b,e+g)],this.isRounded,u,!0);a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",X);mxUtils.extend(ca,mxDoubleEllipse);ca.prototype.outerStroke=!0;ca.prototype.paintVertexShape=function(a,b,e,c,d){var f=Math.min(4,Math.min(c/5,d/5));0<c&&0<d&&(a.ellipse(b+f,e+f,c-2*f,d-2*
-f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,e,c,d),a.stroke())};mxCellRenderer.registerShape("endState",ca);mxUtils.extend(ha,ca);ha.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ha);mxUtils.extend(ea,mxArrowConnector);ea.prototype.defaultWidth=4;ea.prototype.isOpenEnded=function(){return!0};ea.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ea.prototype.isArrowRounded=function(){return this.isRounded};
-mxCellRenderer.registerShape("link",ea);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=10;U.prototype.defaultArrowWidth=20;U.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};U.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};U.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+
-Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",U);mxUtils.extend(da,mxActor);da.prototype.size=30;da.prototype.isRoundable=function(){return!0};da.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(0,b),new mxPoint(c,0),new mxPoint(c,d)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("manualInput",
-da);mxUtils.extend(Q,mxRectangleShape);Q.prototype.dx=20;Q.prototype.dy=20;Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.paintForeground=function(a,b,e,c,d){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*g,d*g));g=Math.max(f,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(d,
-parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,e+f);a.lineTo(b+c,e+f);a.end();a.stroke();a.begin();a.moveTo(b+g,e);a.lineTo(b+g,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",Q);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,
-"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(b,e),new mxPoint(b,d),new mxPoint(0,d)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",M);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(c,0);a.lineTo(c,d);a.end();a.moveTo(0,d/2);a.lineTo(c,d/2);a.end()};mxCellRenderer.registerShape("crossbar",
-la);mxUtils.extend(P,mxActor);P.prototype.dx=20;P.prototype.dy=20;P.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint((c+b)/
-2,e),new mxPoint((c+b)/2,d),new mxPoint((c-b)/2,d),new mxPoint((c-b)/2,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",P);mxUtils.extend(T,mxActor);T.prototype.arrowWidth=.3;T.prototype.arrowSize=.2;T.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",T);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",T.prototype.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"arrowSize",T.prototype.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(b,0),new mxPoint(b,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(b,f),new mxPoint(b,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ja);mxUtils.extend(sa,mxActor);sa.prototype.size=.1;sa.prototype.redrawPath=function(a,
-b,e,c,d){b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(c,0);a.quadTo(c-2*b,d/2,c,d);a.lineTo(b,d);a.quadTo(b-2*b,d/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",sa);mxUtils.extend(N,mxActor);N.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.close();a.end()};mxCellRenderer.registerShape("or",N);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,
-0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.quadTo(c/2,d/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",oa);mxUtils.extend(W,mxActor);W.prototype.size=20;W.prototype.isRoundable=function(){return!0};W.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(c/2,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.8*b),new mxPoint(c,
+z.prototype.redrawPath=function(a,b,e,c,d){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),t=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,
+[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d-e),new mxPoint(Math.min(c,f+t),d-e),new mxPoint(g,d),new mxPoint(Math.max(0,f),d-e),new mxPoint(0,d-e)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",z);mxUtils.extend(C,mxActor);C.prototype.size=.2;C.prototype.fixedSize=20;C.prototype.isRoundable=function(){return!0};C.prototype.redrawPath=function(a,b,e,c,d){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",
+this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(0,d),new mxPoint(b,d/2)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("step",C);mxUtils.extend(A,mxHexagon);A.prototype.size=.25;A.prototype.fixedSize=20;A.prototype.isRoundable=function(){return!0};
+A.prototype.redrawPath=function(a,b,e,c,d){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.5*d),new mxPoint(c-b,d),new mxPoint(b,d),new mxPoint(0,.5*d)],this.isRounded,e,!0)};
+mxCellRenderer.registerShape("hexagon",A);mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.paintForeground=function(a,b,e,c,d){var f=Math.min(c/5,d/5)+1;a.begin();a.moveTo(b+c/2,e+f);a.lineTo(b+c/2,e+d-f);a.moveTo(b+f,e+d/2);a.lineTo(b+c-f,e+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",D);var La=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==
+this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,e,c,d){La.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&(a.setShadow(!1),La.apply(this,[a,b,e,c,d]))}};mxUtils.extend(G,
+mxRectangleShape);G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};G.prototype.paintForeground=function(a,b,e,c,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);b+=f;e+=f;c-=2*f;d-=2*f;0<c&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=g){var t=this.style["symbol"+f+"Align"],m=this.style["symbol"+f+"VerticalAlign"],p=this.style["symbol"+f+"Width"],aa=this.style["symbol"+f+"Height"],n=this.style["symbol"+f+"Spacing"]||0,u=this.style["symbol"+f+"VSpacing"]||n,B=this.style["symbol"+f+"ArcSpacing"];null!=B&&(B*=this.getArcSize(c+this.strokewidth,
+d+this.strokewidth),n+=B,u+=B);var B=b,l=e,B=t==mxConstants.ALIGN_CENTER?B+(c-p)/2:t==mxConstants.ALIGN_RIGHT?B+(c-p-n):B+n,l=m==mxConstants.ALIGN_MIDDLE?l+(d-aa)/2:m==mxConstants.ALIGN_BOTTOM?l+(d-aa-u):l+u;a.save();t=new g;t.style=this.style;g.prototype.paintVertexShape.call(t,a,B,l,p,aa);a.restore()}f++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",G);mxUtils.extend(F,mxCylinder);F.prototype.redrawPath=function(a,b,e,c,d,f){f?
+(a.moveTo(0,0),a.lineTo(c/2,d/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",F);mxUtils.extend(I,mxShape);I.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.ellipse(c/4,0,c/2,d/4);a.fillAndStroke();a.begin();a.moveTo(c/2,d/4);a.lineTo(c/2,2*d/3);a.moveTo(c/2,d/3);a.lineTo(0,d/3);a.moveTo(c/2,d/3);a.lineTo(c,d/3);a.moveTo(c/2,2*d/3);a.lineTo(0,d);a.moveTo(c/2,2*d/3);a.lineTo(c,d);a.end();a.stroke()};
+mxCellRenderer.registerShape("umlActor",I);mxUtils.extend(J,mxShape);J.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};J.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(c/6,d/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",J);mxUtils.extend(t,mxEllipse);t.prototype.paintVertexShape=function(a,b,
+e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,e+d);a.lineTo(b+7*c/8,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",t);mxUtils.extend(K,mxShape);K.prototype.paintVertexShape=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(c,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(c,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(B,mxShape);B.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+
+a.height/8,a.width,7*a.height/8)};B.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,d/8,c,7*d/8);a.fillAndStroke()};B.prototype.paintForeground=function(a,b,e,c,d){a.begin();a.moveTo(3*c/8,d/8*1.1);a.lineTo(5*c/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",B);mxUtils.extend(L,mxRectangleShape);L.prototype.size=40;L.prototype.isHtmlAllowed=function(){return!1};L.prototype.getLabelBounds=
+function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};L.prototype.paintBackground=function(a,b,e,c,d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,e,c,f):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=L&&(g=new g,
+g.apply(this.state),a.save(),g.paintVertexShape(a,b,e,c,f),a.restore()));f<d&&(a.setDashed(!0),a.begin(),a.moveTo(b+c/2,e+f),a.lineTo(b+c/2,e+d),a.end(),a.stroke())};L.prototype.paintForeground=function(a,b,e,c,d){var f=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,e,c,Math.min(d,f))};mxCellRenderer.registerShape("umlLifeline",L);mxUtils.extend(O,mxShape);O.prototype.width=60;O.prototype.height=30;O.prototype.corner=
+10;O.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};O.prototype.paintBackground=function(a,b,e,c,d){var f=this.corner,g=Math.min(c,Math.max(f,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),t=Math.min(d,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),m=mxUtils.getValue(this.style,
+mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);m!=mxConstants.NONE&&(a.setFillColor(m),a.rect(b,e,c,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(a,b,e,c,d),a.setGradient(this.fill,this.gradient,b,e,c,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,e);a.lineTo(b+g,e);a.lineTo(b+g,e+Math.max(0,t-1.5*f));a.lineTo(b+Math.max(0,g-f),e+t);a.lineTo(b,e+t);a.close();a.fillAndStroke();a.begin();
+a.moveTo(b+g,e);a.lineTo(b+c,e);a.lineTo(b+c,e+d);a.lineTo(b,e+d);a.lineTo(b,e+t);a.stroke()};mxCellRenderer.registerShape("umlFrame",O);mxPerimeter.LifelinePerimeter=function(a,b,e,c){c=L.prototype.size;null!=b&&(c=mxUtils.getValue(b.style,"size",c)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;e.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+c,e.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);
+mxPerimeter.OrthogonalPerimeter=function(a,b,e,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,e,c){c=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(c+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return e.x<
+a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,e.y)));e.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,e.x)),a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,e,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",z.prototype.size))*
+b.view.scale))),b.style),b,e,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,c){var d=m.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,t=a.width,p=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=p*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+
+t,g+d),new mxPoint(f+t,g+p),new mxPoint(f,g+p-d),new mxPoint(f,g)]):(d=t*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+t,g),new mxPoint(f+t-d,g+p),new mxPoint(f,g+p),new mxPoint(f+d,g)]);p=a.getCenterX();a=a.getCenterY();a=new mxPoint(p,a);c&&(e.x<f||e.x>f+t?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,e,c){var d=n.prototype.size;null!=b&&(d=
+mxUtils.getValue(b.style,"size",d));var f=a.x,g=a.y,t=a.width,m=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(d=t*Math.max(0,Math.min(1,d)),g=[new mxPoint(f+d,g),new mxPoint(f+t-d,g),new mxPoint(f+t,g+m),new mxPoint(f,g+m),new mxPoint(f+d,g)]):b==mxConstants.DIRECTION_WEST?(d=t*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+t,g),new mxPoint(f+t-d,g+m),new mxPoint(f+d,g+m),new mxPoint(f,
+g)]):b==mxConstants.DIRECTION_NORTH?(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g+d),new mxPoint(f+t,g),new mxPoint(f+t,g+m),new mxPoint(f,g+m-d),new mxPoint(f,g+d)]):(d=m*Math.max(0,Math.min(1,d)),g=[new mxPoint(f,g),new mxPoint(f+t,g+d),new mxPoint(f+t,g+m-d),new mxPoint(f,g+m),new mxPoint(f,g)]);m=a.getCenterX();a=a.getCenterY();a=new mxPoint(m,a);c&&(e.x<f||e.x>f+t?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(g,a,e)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);
+mxPerimeter.StepPerimeter=function(a,b,e,c){var d="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=d?C.prototype.fixedSize:C.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));d&&(f*=b.view.scale);var g=a.x,t=a.y,m=a.width,p=a.height,n=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),t=[new mxPoint(g,
+t),new mxPoint(g+m-d,t),new mxPoint(g+m,a),new mxPoint(g+m-d,t+p),new mxPoint(g,t+p),new mxPoint(g+d,a),new mxPoint(g,t)]):b==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),t=[new mxPoint(g+d,t),new mxPoint(g+m,t),new mxPoint(g+m-d,a),new mxPoint(g+m,t+p),new mxPoint(g+d,t+p),new mxPoint(g,a),new mxPoint(g+d,t)]):b==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),t=[new mxPoint(g,t+d),new mxPoint(n,t),new mxPoint(g+m,t+
+d),new mxPoint(g+m,t+p),new mxPoint(n,t+p-d),new mxPoint(g,t+p),new mxPoint(g,t+d)]):(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),t=[new mxPoint(g,t),new mxPoint(n,t+d),new mxPoint(g+m,t),new mxPoint(g+m,t+p-d),new mxPoint(n,t+p),new mxPoint(g,t+p-d),new mxPoint(g,t)]);n=new mxPoint(n,a);c&&(e.x<g||e.x>g+m?n.y=e.y:n.x=e.x);return mxUtils.getPerimeterPoint(t,n,e)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,e,c){var d=
+"0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=d?A.prototype.fixedSize:A.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));var g=a.x,t=a.y,m=a.width,p=a.height,n=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(d=d?Math.max(0,Math.min(p,f)):p*Math.max(0,Math.min(1,f)),t=[new mxPoint(n,t),new mxPoint(g+m,t+d),new mxPoint(g+
+m,t+p-d),new mxPoint(n,t+p),new mxPoint(g,t+p-d),new mxPoint(g,t+d),new mxPoint(n,t)]):(d=d?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),t=[new mxPoint(g+d,t),new mxPoint(g+m-d,t),new mxPoint(g+m,a),new mxPoint(g+m-d,t+p),new mxPoint(g+d,t+p),new mxPoint(g,a),new mxPoint(g+d,t)]);n=new mxPoint(n,a);c&&(e.x<g||e.x>g+m?n.y=e.y:n.x=e.x);return mxUtils.getPerimeterPoint(t,n,e)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(H,mxShape);H.prototype.size=
+10;H.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,e);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",H);mxUtils.extend(S,mxShape);S.prototype.size=10;S.prototype.inset=2;S.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",
+this.inset))+this.strokewidth;a.translate(b,e);a.begin();a.moveTo(c/2,f+g);a.lineTo(c/2,d);a.end();a.stroke();a.begin();a.moveTo((c-f)/2-g,f/2);a.quadTo((c-f)/2-g,f+g,c/2,f+g);a.quadTo((c+f)/2+g,f+g,(c+f)/2+g,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",S);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=function(a,b,e,c,d){a.translate(b,e);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",
+fa);mxUtils.extend(ga,mxShape);ga.prototype.inset=2;ga.prototype.paintBackground=function(a,b,e,c,d){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,e);a.ellipse(0,f,c-2*f,d-2*f);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,c/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ga);mxUtils.extend(ba,mxCylinder);ba.prototype.jettyWidth=20;ba.prototype.jettyHeight=10;ba.prototype.redrawPath=
+function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,t=Math.min(b,d-b),m=Math.min(t+2*b,d-b);f?(a.moveTo(e,t),a.lineTo(g,t),a.lineTo(g,t+b),a.lineTo(e,t+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,t+b),a.lineTo(0,t+b),
+a.lineTo(0,t),a.lineTo(e,t),a.close());a.end()};mxCellRenderer.registerShape("module",ba);mxUtils.extend(Y,mxCylinder);Y.prototype.jettyWidth=32;Y.prototype.jettyHeight=12;Y.prototype.redrawPath=function(a,b,e,c,d,f){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));e=g/2;var g=e+g/2,t=.3*d-b/2,m=.7*d-b/2;f?(a.moveTo(e,t),a.lineTo(g,t),a.lineTo(g,t+b),a.lineTo(e,t+b),a.moveTo(e,m),a.lineTo(g,m),a.lineTo(g,
+m+b),a.lineTo(e,m+b)):(a.moveTo(e,0),a.lineTo(c,0),a.lineTo(c,d),a.lineTo(e,d),a.lineTo(e,m+b),a.lineTo(0,m+b),a.lineTo(0,m),a.lineTo(e,m),a.lineTo(e,t+b),a.lineTo(0,t+b),a.lineTo(0,t),a.lineTo(e,t),a.close());a.end()};mxCellRenderer.registerShape("component",Y);mxUtils.extend(X,mxRectangleShape);X.prototype.paintForeground=function(a,b,e,c,d){var f=c/2,g=d/2,t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(b+f,e),new mxPoint(b+
+c,e+g),new mxPoint(b+f,e+d),new mxPoint(b,e+g)],this.isRounded,t,!0);a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",X);mxUtils.extend(ca,mxDoubleEllipse);ca.prototype.outerStroke=!0;ca.prototype.paintVertexShape=function(a,b,e,c,d){var f=Math.min(4,Math.min(c/5,d/5));0<c&&0<d&&(a.ellipse(b+f,e+f,c-2*f,d-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,e,c,d),a.stroke())};mxCellRenderer.registerShape("endState",
+ca);mxUtils.extend(ha,ca);ha.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ha);mxUtils.extend(ea,mxArrowConnector);ea.prototype.defaultWidth=4;ea.prototype.isOpenEnded=function(){return!0};ea.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ea.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",ea);mxUtils.extend(U,mxArrowConnector);U.prototype.defaultWidth=
+10;U.prototype.defaultArrowWidth=20;U.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};U.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};U.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",U);mxUtils.extend(da,mxActor);
+da.prototype.size=30;da.prototype.isRoundable=function(){return!0};da.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(0,b),new mxPoint(c,0),new mxPoint(c,d)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("manualInput",da);mxUtils.extend(Q,mxRectangleShape);Q.prototype.dx=20;Q.prototype.dy=20;
+Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.paintForeground=function(a,b,e,c,d){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*g,d*g));g=Math.max(f,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,
+e+f);a.lineTo(b+c,e+f);a.end();a.stroke();a.begin();a.moveTo(b+g,e);a.lineTo(b+g,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",Q);mxUtils.extend(M,mxActor);M.prototype.dx=20;M.prototype.dy=20;M.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(b,e),new mxPoint(b,d),new mxPoint(0,d)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",M);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(c,0);a.lineTo(c,d);a.end();a.moveTo(0,d/2);a.lineTo(c,d/2);a.end()};mxCellRenderer.registerShape("crossbar",la);mxUtils.extend(P,mxActor);P.prototype.dx=
+20;P.prototype.dy=20;P.prototype.redrawPath=function(a,b,e,c,d){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));e=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint((c+b)/2,e),new mxPoint((c+b)/2,d),new mxPoint((c-b)/
+2,d),new mxPoint((c-b)/2,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",P);mxUtils.extend(T,mxActor);T.prototype.arrowWidth=.3;T.prototype.arrowSize=.2;T.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
+mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",T);mxUtils.extend(ja,mxActor);ja.prototype.redrawPath=function(a,b,e,c,d){var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",T.prototype.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",
+T.prototype.arrowSize))));e=(d-f)/2;var f=e+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(b,0),new mxPoint(b,e),new mxPoint(c-b,e),new mxPoint(c-b,0),new mxPoint(c,d/2),new mxPoint(c-b,d),new mxPoint(c-b,f),new mxPoint(b,f),new mxPoint(b,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ja);mxUtils.extend(sa,mxActor);sa.prototype.size=.1;sa.prototype.redrawPath=function(a,b,e,c,d){b=
+c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(c,0);a.quadTo(c-2*b,d/2,c,d);a.lineTo(b,d);a.quadTo(b-2*b,d/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",sa);mxUtils.extend(N,mxActor);N.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.close();a.end()};mxCellRenderer.registerShape("or",N);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,b,e,c,d){a.moveTo(0,0);
+a.quadTo(c,0,c,d/2);a.quadTo(c,d,0,d);a.quadTo(c/2,d/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",oa);mxUtils.extend(W,mxActor);W.prototype.size=20;W.prototype.isRoundable=function(){return!0};W.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(c/2,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.8*b),new mxPoint(c,
d),new mxPoint(0,d),new mxPoint(0,.8*b)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("loopLimit",W);mxUtils.extend(Z,mxActor);Z.prototype.size=.375;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a,b,e,c,d){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d-b),new mxPoint(c/
2,d),new mxPoint(0,d-b)],this.isRounded,e,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",Z);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/2,e+d);a.lineTo(b+c,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",R);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);
a.begin();a.moveTo(b,e+d/2);a.lineTo(b+c,e+d/2);a.end();a.stroke();a.begin();a.moveTo(b+c/2,e);a.lineTo(b+c/2,e+d);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ia);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(a,b,e,c,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*c,e+.145*d);a.lineTo(b+.855*c,e+.855*d);a.end();a.stroke();a.begin();a.moveTo(b+.855*c,e+.145*d);a.lineTo(b+.145*c,e+.855*d);a.end();a.stroke()};
@@ -2806,26 +2808,26 @@ c/2,e+d)):(a.moveTo(b,e+d/2),a.lineTo(b+c,e+d/2));a.end();a.stroke()};mxCellRend
"size",this.size))));b=(d-f)/2;e=b+f;var g=(c-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(c,b);a.lineTo(c,e);a.lineTo(f,e);a.lineTo(f,d);a.lineTo(g,d);a.lineTo(g,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("cross",ya);mxUtils.extend(ma,mxActor);ma.prototype.size=.25;ma.prototype.redrawPath=function(a,b,e,c,d){b=Math.min(c,d/2);e=Math.min(c-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,d/2);a.lineTo(e,
0);a.lineTo(c-b,0);a.quadTo(c,0,c,d/2);a.quadTo(c,d,c-b,d);a.lineTo(e,d);a.close();a.end()};mxCellRenderer.registerShape("display",ma);mxUtils.extend(ta,mxConnector);ta.prototype.origPaintEdgeShape=ta.prototype.paintEdgeShape;ta.prototype.paintEdgeShape=function(a,b,e){for(var c=[],d=0;d<b.length;d++)c.push(mxUtils.clone(b[d]));var d=a.state.dashed,f=a.state.fixDash;ta.prototype.origPaintEdgeShape.apply(this,[a,c,e]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&
(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,f),ta.prototype.origPaintEdgeShape.apply(this,[a,b,e])))};mxCellRenderer.registerShape("filledEdge",ta);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),e=a.apply(this,arguments);"umlFrame"==b.style.shape&&e.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});
-return e}}();mxMarker.addMarker("dash",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-t/2,c.y-t/2+n/2);a.lineTo(c.x+t/2-3*n/2,c.y-3*t/2-n/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1),B=c.x+n/2,l=c.y+t/2;c.x-=n;c.y-=t;return function(){a.begin();a.moveTo(B-n/2-t/2,l-t/2+n/2);a.lineTo(B-n/2+t/2,l-t/2-n/2);a.lineTo(B+t/2-3*n/2,l-3*t/2-n/2);a.lineTo(B-t/2-3*n/2,l-3*t/2+n/2);a.close();p?a.fillAndStroke():
-a.stroke()}});mxMarker.addMarker("cross",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-t/2,c.y-t/2+n/2);a.lineTo(c.x+t/2-3*n/2,c.y-3*t/2-n/2);a.moveTo(c.x-n/2+t/2,c.y-t/2-n/2);a.lineTo(c.x-t/2-3*n/2,c.y-3*t/2+n/2);a.stroke()}});mxMarker.addMarker("circle",Ba);mxMarker.addMarker("circlePlus",function(a,b,e,c,d,f,g,u,m,p){var n=c.clone(),t=Ba.apply(this,arguments),B=d*(g+2*m),l=f*(g+2*m);return function(){t.apply(this,arguments);a.begin();a.moveTo(n.x-
-d*m,n.y-f*m);a.lineTo(n.x-2*B+d*m,n.y-2*l+f*m);a.moveTo(n.x-B-l+f*m,n.y-l+B-d*m);a.lineTo(n.x+l-B-f*m,n.y-l-B+d*m);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,e,c,d,f,g,u,m,p){var n=d*(g+m+1),t=f*(g+m+1),B=c.clone();c.x-=n;c.y-=t;return function(){a.begin();a.moveTo(B.x-t,B.y+n);a.quadTo(c.x-t,c.y+n,c.x,c.y);a.quadTo(c.x+t,c.y-n,B.x+t,B.y-n);a.stroke()}});mxMarker.addMarker("async",function(a,b,e,c,d,f,g,u,m,p){b=d*m*1.118;e=f*m*1.118;d*=g+m;f*=g+m;var n=c.clone();n.x-=b;n.y-=e;c.x+=
-1*-d-b;c.y+=1*-f-e;return function(){a.begin();a.moveTo(n.x,n.y);u?a.lineTo(n.x-d-f/2,n.y-f+d/2):a.lineTo(n.x+f/2-d,n.y-f-d/2);a.lineTo(n.x-d,n.y-f);a.close();p?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,e,c,d,f,g,u,m,p,n){f*=u+p;g*=u+p;var t=d.clone();return function(){b.begin();b.moveTo(t.x,t.y);m?b.lineTo(t.x-f-g/a,t.y-g+f/a):b.lineTo(t.x+g/a-f,t.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Oa=function(a,
-b,e){return Da(a,["width"],b,function(b,c,d,f,g){g=a.shape.getEdgeWidth()*a.view.scale+e;return new mxPoint(f.x+c*b/4+d*g/2,f.y+d*b/4-c*g/2)},function(b,c,d,f,g,u){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));a.style.width=Math.round(2*b)/a.view.scale-e})},Da=function(a,b,e,c,d){return V(a,b,function(b){var d=a.absolutePoints,f=d.length-1;b=a.view.translate;var g=a.view.scale,u=e?d[0]:d[f],d=e?d[1]:d[f-1],f=d.x-u.x,m=d.y-u.y,p=Math.sqrt(f*f+m*m),u=c.call(this,p,f/p,m/p,u,d);return new mxPoint(u.x/
-g-b.x,u.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,u=g.length-1;b=a.view.translate;var m=a.view.scale,p=e?g[0]:g[u],g=e?g[1]:g[u-1],u=g.x-p.x,n=g.y-p.y,t=Math.sqrt(u*u+n*n);c.x=(c.x+b.x)*m;c.y=(c.y+b.y)*m;d.call(this,t,u/t,n/t,p,g,c,f)})},za=function(a){return function(b){return[V(b,["arrowWidth","arrowSize"],function(b){var e=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",T.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",T.prototype.arrowSize)));
+return e}}();mxMarker.addMarker("dash",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-u/2,c.y-u/2+n/2);a.lineTo(c.x+u/2-3*n/2,c.y-3*u/2-n/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1),B=c.x+n/2,l=c.y+u/2;c.x-=n;c.y-=u;return function(){a.begin();a.moveTo(B-n/2-u/2,l-u/2+n/2);a.lineTo(B-n/2+u/2,l-u/2-n/2);a.lineTo(B+u/2-3*n/2,l-3*u/2-n/2);a.lineTo(B-u/2-3*n/2,l-3*u/2+n/2);a.close();p?a.fillAndStroke():
+a.stroke()}});mxMarker.addMarker("cross",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1);return function(){a.begin();a.moveTo(c.x-n/2-u/2,c.y-u/2+n/2);a.lineTo(c.x+u/2-3*n/2,c.y-3*u/2-n/2);a.moveTo(c.x-n/2+u/2,c.y-u/2-n/2);a.lineTo(c.x-u/2-3*n/2,c.y-3*u/2+n/2);a.stroke()}});mxMarker.addMarker("circle",Ba);mxMarker.addMarker("circlePlus",function(a,b,e,c,d,f,g,t,m,p){var n=c.clone(),u=Ba.apply(this,arguments),B=d*(g+2*m),l=f*(g+2*m);return function(){u.apply(this,arguments);a.begin();a.moveTo(n.x-
+d*m,n.y-f*m);a.lineTo(n.x-2*B+d*m,n.y-2*l+f*m);a.moveTo(n.x-B-l+f*m,n.y-l+B-d*m);a.lineTo(n.x+l-B-f*m,n.y-l-B+d*m);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,e,c,d,f,g,t,m,p){var n=d*(g+m+1),u=f*(g+m+1),B=c.clone();c.x-=n;c.y-=u;return function(){a.begin();a.moveTo(B.x-u,B.y+n);a.quadTo(c.x-u,c.y+n,c.x,c.y);a.quadTo(c.x+u,c.y-n,B.x+u,B.y-n);a.stroke()}});mxMarker.addMarker("async",function(a,b,e,c,d,f,g,t,m,p){b=d*m*1.118;e=f*m*1.118;d*=g+m;f*=g+m;var n=c.clone();n.x-=b;n.y-=e;c.x+=
+1*-d-b;c.y+=1*-f-e;return function(){a.begin();a.moveTo(n.x,n.y);t?a.lineTo(n.x-d-f/2,n.y-f+d/2):a.lineTo(n.x+f/2-d,n.y-f-d/2);a.lineTo(n.x-d,n.y-f);a.close();p?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,e,c,d,f,g,t,m,p,n){f*=t+p;g*=t+p;var u=d.clone();return function(){b.begin();b.moveTo(u.x,u.y);m?b.lineTo(u.x-f-g/a,u.y-g+f/a):b.lineTo(u.x+g/a-f,u.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Oa=function(a,
+b,e){return Da(a,["width"],b,function(b,c,d,f,g){g=a.shape.getEdgeWidth()*a.view.scale+e;return new mxPoint(f.x+c*b/4+d*g/2,f.y+d*b/4-c*g/2)},function(b,c,d,f,g,t){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));a.style.width=Math.round(2*b)/a.view.scale-e})},Da=function(a,b,e,c,d){return V(a,b,function(b){var d=a.absolutePoints,f=d.length-1;b=a.view.translate;var g=a.view.scale,t=e?d[0]:d[f],d=e?d[1]:d[f-1],f=d.x-t.x,m=d.y-t.y,p=Math.sqrt(f*f+m*m),t=c.call(this,p,f/p,m/p,t,d);return new mxPoint(t.x/
+g-b.x,t.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,t=g.length-1;b=a.view.translate;var m=a.view.scale,p=e?g[0]:g[t],g=e?g[1]:g[t-1],t=g.x-p.x,n=g.y-p.y,u=Math.sqrt(t*t+n*n);c.x=(c.x+b.x)*m;c.y=(c.y+b.y)*m;d.call(this,u,t/u,n/u,p,g,c,f)})},za=function(a){return function(b){return[V(b,["arrowWidth","arrowSize"],function(b){var e=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",T.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",T.prototype.arrowSize)));
return new mxPoint(b.x+(1-c)*b.width,b.y+(1-e)*b.height/2)},function(b,e){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-e.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-e.x)/b.width))})]}},Ka=function(a,b,e){return function(c){var d=[V(c,["size"],function(e){var c=Math.max(0,Math.min(e.width,Math.min(e.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(e.x+c,e.y+c)},function(b,e){this.state.style.size=Math.round(Math.max(0,
Math.min(Math.min(b.width,e.x-b.x),Math.min(b.height,e.y-b.y)))/a)},!1)];e&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(va(c));return d}},Ea=function(a,b,e,c,d){e=null!=e?e:1;return function(f){var g=[V(f,["size"],function(b){var e=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",e?d:a));return new mxPoint(b.x+Math.max(0,Math.min(b.width,c*(e?1:b.width))),b.getCenterY())},function(a,b,c){a=null!=d&&"0"!=mxUtils.getValue(this.state.style,
"fixedSize","0")?b.x-a.x:Math.max(0,Math.min(e,(b.x-a.x)/a.width));this.state.style.size=a},!1,c)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(va(f));return g}},Ma=function(a){return function(b){var e=[V(b,["size"],function(b){var e=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(b.x+e*b.width*.75,b.y+b.height/4)},function(b,e){this.state.style.size=Math.max(0,Math.min(a,(e.x-b.x)/(.75*b.width)))},!1,!0)];mxUtils.getValue(b.style,
mxConstants.STYLE_ROUNDED,!1)&&e.push(va(b));return e}},Ca=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(va(a));return b}},va=function(a,b){return V(a,[mxConstants.STYLE_ARCSIZE],function(e){var c=null!=b?b:e.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var d=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(e.x+e.width-Math.min(e.width/2,d),e.y+c)}d=Math.max(0,
parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(e.x+e.width-Math.min(Math.max(e.width/2,e.height/2),Math.min(e.width,e.height)*d),e.y+c)},function(b,e,c){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-e.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-
-e.x+b.x)/Math.min(b.width,b.height))))})},V=function(a,b,e,c,d,f,g){var u=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);u.execute=function(a){for(var e=0;e<b.length;e++)this.copyStyle(b[e]);g&&g(a)};u.getPosition=e;u.setPosition=c;u.ignoreGrid=null!=d?d:!0;if(f){var m=u.positionChanged;u.positionChanged=function(){m.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return u},Fa={link:function(a){return[Oa(a,!0,10),Oa(a,!1,10)]},flexArrow:function(a){var b=
+e.x+b.x)/Math.min(b.width,b.height))))})},V=function(a,b,e,c,d,f,g){var t=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);t.execute=function(a){for(var e=0;e<b.length;e++)this.copyStyle(b[e]);g&&g(a)};t.getPosition=e;t.setPosition=c;t.ignoreGrid=null!=d?d:!0;if(f){var m=t.positionChanged;t.positionChanged=function(){m.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return t},Fa={link:function(a){return[Oa(a,!0,10),Oa(a,!1,10)]},flexArrow:function(a){var b=
a.view.graph.gridSize/a.view.scale,e=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(e.push(Da(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,e,c,d,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)+c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)-e*
-b/2)},function(e,c,d,f,g,u,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<
-b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),e.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,e,c,d,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)+c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)-e*b/2)},function(e,c,d,f,g,u,m){e=
-Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
+b/2)},function(e,c,d,f,g,t,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<
+b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),e.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,e,c,d,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)+c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)-e*b/2)},function(e,c,d,f,g,t,m){e=
+Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-
parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(e.push(Da(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,e,c,d,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,
-mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,u,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
+mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,t,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*e)/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(m.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),e.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,e,c,d,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/
-5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,u,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,u.x,u.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,u.x,u.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
+5)*a.view.scale;return new mxPoint(d.x+e*(f+a.shape.strokewidth*a.view.scale)-c*b/2,d.y+c*(f+a.shape.strokewidth*a.view.scale)+e*b/2)},function(e,c,d,f,g,t,m){e=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,t.x,t.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+d,f.y-c,t.x,t.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*e)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(m.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=
a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(m.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return e},swimlane:function(a){var b=[];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var e=
parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(va(a,e/2))}b.push(V(a,[mxConstants.STYLE_STARTSIZE],function(b){var e=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,e))):new mxPoint(b.x+Math.max(0,Math.min(b.width,e)),b.getCenterY())},function(b,e){a.style[mxConstants.STYLE_STARTSIZE]=
1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,e.y-b.y))):Math.round(Math.max(0,Math.min(b.width,e.x-b.x)))},!1,null,function(b){if(mxEvent.isControlDown(b.getEvent())&&(b=a.view.graph,b.isTableRow(a.cell)||b.isTableCell(a.cell))){for(var e=b.getSwimlaneDirection(a.style),c=b.model.getParent(a.cell),c=b.model.getChildCells(c,!0),d=[],f=0;f<c.length;f++)c[f]!=a.cell&&b.isSwimlane(c[f])&&b.getSwimlaneDirection(b.getCurrentCellStyle(c[f]))==
@@ -2844,11 +2846,11 @@ mxUtils.getValue(this.state.style,"jettyHeight",ba.prototype.jettyHeight)));retu
b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},singleArrow:za(1),doubleArrow:za(.5),folder:function(a){return[V(a,["tabWidth","tabHeight"],function(a){var e=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",b.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",b.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",b.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(e=a.width-e);return new mxPoint(a.x+e,a.y+c)},function(a,e){var c=Math.max(0,Math.min(a.width,e.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",b.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,e.y-a.y)))},!1)]},document:function(a){return[V(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",p.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},tape:function(a){return[V(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))},!1)]},offPageConnector:function(a){return[V(a,
-["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},step:Ea(C.prototype.size,!0,null,!0,C.prototype.fixedSize),hexagon:Ea(A.prototype.size,!0,.5,!0),curlyBracket:Ea(v.prototype.size,!1),display:Ea(ma.prototype.size,!1),cube:Ka(1,c.prototype.size,!1),card:Ka(.5,e.prototype.size,!0),
-loopLimit:Ka(.5,W.prototype.size,!0),trapezoid:Ma(.5),parallelogram:Ma(1)};Graph.createHandle=V;Graph.handleFactory=Fa;var Ta=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=Ta.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);
-b=Fa[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Fa[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Fa[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ga=new mxPoint(1,0),
-Ha=new mxPoint(1,0),za=mxUtils.toRadians(-30),Ga=mxUtils.getRotatedPoint(Ga,Math.cos(za),Math.sin(za)),za=mxUtils.toRadians(-150),Ha=mxUtils.getRotatedPoint(Ha,Math.cos(za),Math.sin(za));mxEdgeStyle.IsometricConnector=function(a,b,e,c,d){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,u=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==u&&null!=b&&(u=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=e&&(g=new mxPoint(e.getCenterX(),e.getCenterY()));
-var m=Ga.x,p=Ga.y,n=Ha.x,t=Ha.y,B="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=u){a=function(a,b,e){a-=l.x;var c=b-l.y;b=(t*a-n*c)/(m*t-p*n);a=(p*a-m*c)/(p*n-m*t);B?(e&&(l=new mxPoint(l.x+m*b,l.y+p*b),d.push(l)),l=new mxPoint(l.x+n*a,l.y+t*a)):(e&&(l=new mxPoint(l.x+n*a,l.y+t*a),d.push(l)),l=new mxPoint(l.x+m*b,l.y+p*b));d.push(l)};var l=u;null==c&&(c=new mxPoint(u.x+(g.x-u.x)/2,u.y+(g.y-u.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
+["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},step:Ea(C.prototype.size,!0,null,!0,C.prototype.fixedSize),hexagon:Ea(A.prototype.size,!0,.5,!0,A.prototype.fixedSize),curlyBracket:Ea(v.prototype.size,!1),display:Ea(ma.prototype.size,!1),cube:Ka(1,c.prototype.size,!1),card:Ka(.5,
+e.prototype.size,!0),loopLimit:Ka(.5,W.prototype.size,!0),trapezoid:Ma(.5),parallelogram:Ma(1)};Graph.createHandle=V;Graph.handleFactory=Fa;var Ta=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=Ta.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&
+(b=mxConstants.SHAPE_SWIMLANE);b=Fa[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Fa[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Fa[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory=
+{};var Ga=new mxPoint(1,0),Ha=new mxPoint(1,0),za=mxUtils.toRadians(-30),Ga=mxUtils.getRotatedPoint(Ga,Math.cos(za),Math.sin(za)),za=mxUtils.toRadians(-150),Ha=mxUtils.getRotatedPoint(Ha,Math.cos(za),Math.sin(za));mxEdgeStyle.IsometricConnector=function(a,b,e,c,d){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,t=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==t&&null!=b&&(t=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=e&&(g=new mxPoint(e.getCenterX(),
+e.getCenterY()));var m=Ga.x,p=Ga.y,n=Ha.x,u=Ha.y,B="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=t){a=function(a,b,e){a-=l.x;var c=b-l.y;b=(u*a-n*c)/(m*u-p*n);a=(p*a-m*c)/(p*n-m*u);B?(e&&(l=new mxPoint(l.x+m*b,l.y+p*b),d.push(l)),l=new mxPoint(l.x+n*a,l.y+u*a)):(e&&(l=new mxPoint(l.x+n*a,l.y+u*a),d.push(l)),l=new mxPoint(l.x+m*b,l.y+p*b));d.push(l)};var l=t;null==c&&(c=new mxPoint(t.x+(g.x-t.x)/2,t.y+(g.y-t.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",
mxEdgeStyle.IsometricConnector);var Ua=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var e=new mxElbowEdgeHandler(a);e.snapToTerminals=!1;return e}return Ua.apply(this,arguments)};f.prototype.constraints=[];d.prototype.getConstraints=function(a,b,e){a=[];var c=Math.tan(mxUtils.toRadians(30)),d=(.5-c)/2,c=Math.min(b,e/(.5+c));b=(b-c)/2;e=(e-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b+.5*c,e+c*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+c,e+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+c,e+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*c,e+(1-d)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e+.75*c));return a};z.prototype.getConstraints=function(a,b,e){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,
@@ -2900,8 +2902,8 @@ Actions.prototype.init=function(){function a(a){d.escape();a=d.deleteCells(d.get
"import";window.openFile=new OpenFile(mxUtils.bind(this,function(){c.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,e){try{var b=mxUtils.parseXml(a);f.graph.setSelectionCells(f.graph.importGraphModel(b.documentElement))}catch(p){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+p.message)}}));c.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+
"+S").isEnabled=k;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,296,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",function(){c.showDialog((new PageSetupDialog(c)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){c.showDialog((new PrintDialog(c)).container,
300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(d,null,10,10)});this.addAction("undo",function(){c.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){c.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{mxClipboard.copy(d)}catch(b){c.handleError(b)}},
-null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var c=0;c<b.length&&a;c++)a=a&&d.model.isEdge(b[c]);var f=d.view.translate,m=d.view.scale,n=f.x,l=f.y,f=null;if(1==b.length&&a){var t=d.getCellGeometry(b[0]);
-null!=t&&(f=t.getTerminalPoint(!0))}f=null!=f?f:d.getBoundingBoxFromGeometry(b,a);if(null!=f){var k=Math.round(d.snap(d.popupMenuHandler.triggerX/m-n)),y=Math.round(d.snap(d.popupMenuHandler.triggerY/m-l));d.cellsMoved(b,k-f.x,y-f.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&&(a=d.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shift+X");
+null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var c=0;c<b.length&&a;c++)a=a&&d.model.isEdge(b[c]);var f=d.view.translate,m=d.view.scale,n=f.x,l=f.y,f=null;if(1==b.length&&a){var u=d.getCellGeometry(b[0]);
+null!=u&&(f=u.getTerminalPoint(!0))}f=null!=f?f:d.getBoundingBoxFromGeometry(b,a);if(null!=f){var k=Math.round(d.snap(d.popupMenuHandler.triggerX/m-n)),y=Math.round(d.snap(d.popupMenuHandler.triggerY/m-l));d.cellsMoved(b,k-f.x,y-f.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&&(a=d.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shift+X");
this.addAction("pasteSize",function(a){if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=c.copiedSize){d.getModel().beginUpdate();try{var b=d.getSelectionCells();for(a=0;a<b.length;a++)if(d.getModel().isVertex(b[a])){var f=d.getCellGeometry(b[a]);null!=f&&(f=f.clone(),f.width=c.copiedSize.width,f.height=c.copiedSize.height,d.getModel().setGeometry(b[a],f))}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");
this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{d.setSelectionCells(d.duplicateCells()),d.scrollCellToVisible(d.getSelectionCell())}catch(b){c.handleError(b)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(a){d.turnShapes(d.getSelectionCells(),null!=a?mxEvent.isShiftDown(a):!1)},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",function(){d.selectVertices(null,
!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){d.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){d.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){d.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{var a=d.isCellMovable(d.getSelectionCell())?1:0;d.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -2956,8 +2958,8 @@ DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveR
DrawioFile.prototype.synchronizeFile=function(a,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,c):this.updateFile(a,c)};
DrawioFile.prototype.updateFile=function(a,c,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=k?this.mergeFile(k,a,c,d):this.reloadFile(a,c))}catch(l){null!=c&&c(l)}}),c))};
DrawioFile.prototype.mergeFile=function(a,c,f,d){var k=!0;try{this.stats.fileMerged++;var l=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),q=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=q&&0<q.length){this.shadowPages=q;this.backupPatch=this.isModified()?this.ui.diffPages(l,this.ui.pages):null;var b=[this.ui.diffPages(null!=d?d:l,this.shadowPages)];if(!this.ignorePatches(b)){var e=this.ui.patchPages(l,
-b[0]);d={};var g=this.ui.getHashValueForPages(e,d),l={},p=this.ui.getHashValueForPages(this.shadowPages,l);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",b,"checksum",p==g,g);if(null!=g&&g!=p){var m=this.compressReportData(this.getAnonymizedXmlForPages(q)),n=this.compressReportData(this.getAnonymizedXmlForPages(e)),v=this.ui.hashValue(a.getCurrentEtag()),t=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,b,"Shadow Details: "+JSON.stringify(d)+
-"\nChecksum: "+g+"\nCurrent: "+p+"\nCurrent Details: "+JSON.stringify(l)+"\nFrom: "+v+"\nTo: "+t+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(b,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(E){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+b[0]);d={};var g=this.ui.getHashValueForPages(e,d),l={},p=this.ui.getHashValueForPages(this.shadowPages,l);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",b,"checksum",p==g,g);if(null!=g&&g!=p){var m=this.compressReportData(this.getAnonymizedXmlForPages(q)),n=this.compressReportData(this.getAnonymizedXmlForPages(e)),v=this.ui.hashValue(a.getCurrentEtag()),u=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,b,"Shadow Details: "+JSON.stringify(d)+
+"\nChecksum: "+g+"\nCurrent: "+p+"\nCurrent Details: "+JSON.stringify(l)+"\nFrom: "+v+"\nTo: "+u+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(b,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(E){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
null!=f&&f(E);try{if(k)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,E);else{var x=this.getCurrentUser(),y=null!=x?x.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),y,E)}}catch(z){}}};
DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),f=c.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var k=c.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,k,!0);f.appendChild(k)}return mxUtils.getPrettyXml(f)};
DrawioFile.prototype.compressReportData=function(a,c,f){c=null!=c?c:1E4;null!=f&&null!=a&&a.length>f?a=a.substring(0,f)+"[...]":null!=a&&a.length>c&&(a=Graph.compress(a)+"\n");return a};
@@ -2976,8 +2978,8 @@ l.mathEnabled?(this.ui.editor.updateGraphComponents(),l.refresh()):(b!=l.folding
DrawioFile.prototype.save=function(a,c,f,d,k,l){try{if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(q){if(null!=f)f(q);else throw q;}};
DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,c,f){};DrawioFile.prototype.saveFile=function(a,c,f,d){};
DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.getShadowModified=function(){return this.shadowModified};DrawioFile.prototype.setShadowModified=function(a){this.shadowModified=a};DrawioFile.prototype.setModified=function(a){this.shadowModified=this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};
-DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,c,f){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,c,f){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};
-DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};
+DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,c,f){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,c,f){};DrawioFile.prototype.share=function(){this.ui.alert(mxResources.get("sharingAvailable"),null,380)};DrawioFile.prototype.getHash=function(){return""};
+DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};DrawioFile.prototype.setData=function(a){this.data=a};DrawioFile.prototype.getData=function(){return this.data};
DrawioFile.prototype.open=function(){this.stats.opened++;var a=this.getData();if(null!=a){var c=function(a){for(var c=0;null!=a&&c<a.length;c++){var f=a[c];null!=f.id&&0==f.id.indexOf("extFont_")&&f.parentNode.removeChild(f)}};c(document.querySelectorAll("head > style[id]"));c(document.querySelectorAll("head > link[id]"));this.ui.setFileData(a);this.isModified()||(this.shadowData=mxUtils.getXml(this.ui.getXmlFileData()),this.shadowPages=null)}this.installListeners();this.isSyncSupported()&&this.startSync()};
DrawioFile.prototype.isSyncSupported=function(){return!1};DrawioFile.prototype.isRevisionHistorySupported=function(){return!1};DrawioFile.prototype.getRevisions=function(a,c){a(null)};DrawioFile.prototype.loadDescriptor=function(a,c){a(null)};DrawioFile.prototype.loadPatchDescriptor=function(a,c){this.loadDescriptor(mxUtils.bind(this,function(c){a(c)}),c)};DrawioFile.prototype.patchDescriptor=function(a,c){this.setDescriptorEtag(a,this.getDescriptorEtag(c))};
DrawioFile.prototype.startSync=function(){"auto"!=DrawioFile.SYNC||"1"==urlParams.stealth||"1"!=urlParams.rt&&this.ui.editor.chromeless&&!this.ui.editor.editable||(null==this.sync&&(this.sync=new DrawioFileSync(this)),this.sync.start())};DrawioFile.prototype.isConflict=function(){return!1};DrawioFile.prototype.getChannelId=function(){return Graph.compress(this.getHash()).replace(/[\/ +]/g,"_")};DrawioFile.prototype.getChannelKey=function(a){return null};DrawioFile.prototype.getCurrentUser=function(){return null};
@@ -2990,8 +2992,9 @@ DrawioFile.prototype.addAllSavedStatus=function(a){null!=this.ui.statusContainer
DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var a={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(a));EditorUi.debug("draft saved",this.draftId,a)}catch(c){console.error(c),this.removeDraft()}};
DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(a){}};
DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else{c=this.getErrorMessage(a);if(null==c&&null!=this.lastSaved){var f=this.ui.timeSince(new Date(this.lastSaved));
-null!=f&&(c=mxResources.get("lastSaved",[f]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+c+"</div>");c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=
-this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&(null!=this.saveDraftThread&&window.clearTimeout(this.saveDraftThread),this.saveDraftThread=window.setTimeout(mxUtils.bind(this,function(){this.saveDraft()}),0))}};
+null!=f&&(c=mxResources.get("lastSaved",[f]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlertOrange" style="cursor:pointer;overflow:hidden;">'+c+' <img src="'+Editor.saveImage+'" align="top" style="width:16px;margin-top:-2px"/></div>');c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?
+mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&(null!=this.saveDraftThread&&window.clearTimeout(this.saveDraftThread),this.saveDraftThread=window.setTimeout(mxUtils.bind(this,
+function(){this.saveDraft()}),0))}};
DrawioFile.prototype.addConflictStatus=function(a,c){this.invalidChecksum&&null==c&&(c=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":""));this.ui.spinner.stop();this.clearAutosave();var f=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=f&&0<f.length?mxEvent.addListener(f[0],"click",mxUtils.bind(this,function(c){"IMG"!=mxEvent.getSource(c).nodeName&&
a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')};
DrawioFile.prototype.showRefreshDialog=function(a,c,f){null==f&&(f=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,c)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,c)}),f),this.ui.showError(mxResources.get("error")+" ("+f+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a,
@@ -3007,7 +3010,7 @@ DrawioFile.prototype.handleConflictError=function(a,c){var f=mxUtils.bind(this,f
this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,f,d,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(f,d,k):this.invalidChecksum?this.showRefreshDialog(f,d,this.getErrorMessage(a)):c?this.showConflictDialog(k,l):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));
this.synchronizeFile(f,d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){var c=null!=a?null!=a.error?a.error.message:a.message:null;null==c&&null!=a&&a.code==App.ERROR_TIMEOUT&&(c=mxResources.get("timeout"));return c};DrawioFile.prototype.isOverdue=function(){return null!=this.ageStart&&Date.now()-this.ageStart.getTime()>=this.ui.warnInterval};
DrawioFile.prototype.fileChanged=function(){this.lastChanged=new Date;this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){this.ui.stopSanityCheck();null==this.autosaveThread?(this.handleFileSuccess(!0),this.ageStart=null):this.isModified()&&(this.ui.scheduleSanityCheck(),this.ageStart=
-this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a,c){var f=Editor.guid(32);null!=this.sync?this.sync.createToken(f,mxUtils.bind(this,function(c){a(f,c)}),c):a(f)};
+this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a){var c=Editor.guid(32);null!=this.sync?this.sync.createToken(c,mxUtils.bind(this,function(f){a(c,f)}),mxUtils.bind(this,function(){a(c)})):a(c)};
DrawioFile.prototype.fileSaved=function(a,c,f,d,k){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=f&&f()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,f,d,k)}catch(b){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(b);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,b);else{var l=
this.getCurrentUser(),q=null!=l?l.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),q,b)}}catch(e){}}};
DrawioFile.prototype.autosave=function(a,c,f,d){null==this.lastAutosave&&(this.lastAutosave=Date.now());a=Date.now()-this.lastAutosave<c?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();null!=f&&f(a)}),mxUtils.bind(this,
@@ -3024,7 +3027,8 @@ this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,l?"image/png":"text/xml",l
this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){b(a)}),d,this.ui.getCurrentFile()!=this?c:null,k.scale,k.border)):b(c)};LocalFile.prototype.rename=function(a,c,f){this.title=a;this.descriptorChanged();null!=c&&c()};LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio"},{description:"diagramPngDesc",extension:"png"},{description:"diagramSvgDesc",extension:"svg"},{description:"diagramHtmlDesc",extension:"html"},{description:"diagramXmlDesc",extension:"xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",
extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",
fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},graph:{background:"#DAD2D8",gridColor:"#ABA4A9"}},{commonStyle:{fontColor:"#FEFAE0",strokeColor:"#DDA15E",fillColor:"#BC6C25"},graph:{background:"#283618",
-gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}}];Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
+gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}}];Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkgMTJ2N0g1di03SDN2N2MwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0yem0tNiAuNjdsMi41OS0yLjU4TDE3IDExLjVsLTUgNS01LTUgMS40MS0xLjQxTDExIDEyLjY3VjNoMnoiLz48L3N2Zz4=";
+Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=":
IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDAAMAPUxAEVriVp7lmCAmmGBm2OCnGmHn3OPpneSqYKbr4OcsIScsI2kto6kt46lt5KnuZmtvpquvpuvv56ywaCzwqK1xKu7yay9yq+/zLHAzbfF0bjG0bzJ1LzK1MDN18jT28nT3M3X3tHa4dTc49Xd5Njf5dng5t3k6d/l6uDm6uru8e7x8/Dz9fT29/b4+Pj5+fj5+vr6+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkKADEAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAADAAMAAAGR8CYcEgsOgYAIax4CCQuQldrCBEsiK8VS2hoFGOrlJDA+cZQwkLnqyoJFZKviSS0ICrE0ec0jDAwIiUeGyBFGhMPFBkhZo1BACH5BAkKAC4ALAAAAAAMAAwAhVB0kFR3k1V4k2CAmmWEnW6Lo3KOpXeSqH2XrIOcsISdsImhtIqhtJCmuJGnuZuwv52wwJ+ywZ+ywqm6yLHBzbLCzrXEz7fF0LnH0rrI0r7L1b/M1sXR2cfT28rV3czW3s/Z4Nfe5Nvi6ODm6uLn6+Ln7OLo7OXq7efs7+zw8u/y9PDy9PX3+Pr7+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZDQJdwSCxGDAIAoVFkFBwYSyIwGE4OkCJxIdG6WkJEx8sSKj7elfBB0a5SQg1EQ0SVVMPKhDM6iUIkRR4ZFxsgJl6JQQAh+QQJCgAxACwAAAAADAAMAIVGa4lcfZdjgpxkg51nhp5ui6N3kqh5lKqFnbGHn7KIoLOQp7iRp7mSqLmTqbqarr6br7+fssGitcOitcSuvsuuv8uwwMyzw861xNC5x9K6x9K/zNbDztjE0NnG0drJ1NzQ2eDS2+LT2+LV3ePZ4Oba4ebb4ufc4+jm6+7t8PLt8PPt8fPx8/Xx9PX09vf19/j3+Pn///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CYcEgsUhQFggFSjCQmnE1jcBhqGBXiIuAQSi7FGEIgfIzCFoCXFCZiPO0hKBMiwl7ET6eUYqlWLkUnISImKC1xbUEAIfkECQoAMgAsAAAAAAwADACFTnKPT3KPVHaTYoKcb4yjcY6leZSpf5mtgZuvh5+yiqG0i6K1jqW3kae5nrHBnrLBn7LCoLPCobTDqbrIqrvIs8LOtMPPtcPPtcTPuMbRucfSvcrUvsvVwMzWxdHaydTcytXdzNbezdff0drh2ODl2+Ln3eTp4Obq4ujs5Ont5uvu6O3w6u7w6u7x7/L09vj5+vr7+vv7////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkdAmXBILHIcicOCUqxELKKPxKAYgiYd4oMAEWo8RVmjIMScwhmBcJMKXwLCECmMGAhPI1QRwBiaSixCMDFhLSorLi8wYYxCQQAh+QQJCgAxACwAAAAADAAMAIVZepVggJphgZtnhp5vjKN2kah3kqmBmq+KobSLorWNpLaRp7mWq7ybr7+gs8KitcSktsWnuManucexwM2ywc63xtG6yNO9ytS+ytW/zNbDz9jH0tvL1d3N197S2+LU3OPU3ePV3eTX3+Xa4efb4ufd5Onl6u7r7vHs7/Lt8PLw8/Xy9Pby9fb09ff2+Pn3+Pn6+vr///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSMCYcEgseiwSR+RS7GA4JFGF8RiWNiEiJTERgkjFGAQh/KTCGoJwpApnBkITKrwoCFWnFlEhaAxXLC9CBwAGRS4wQgELYY1CQQAh+QQJCgAzACwAAAAADAAMAIVMcI5SdZFhgZtti6JwjaR4k6mAma6Cm6+KobSLorWLo7WNo7aPpredsMCescGitMOitcSmuMaqu8ixwc2zws63xdC4xtG5x9K9ytXAzdfCztjF0NnF0drK1d3M1t7P2N/P2eDT2+LX3+Xe5Onh5+vi5+vj6Ozk6e3n7O/o7O/q7vHs7/Lt8PPu8fPx8/X3+Pn6+vv7+/v8/Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRcCZcEgsmkIbTOZTLIlGqZNnchm2SCgiJ6IRqljFmQUiXIVnoITQde4chC9Y+LEQxmTFRkFSNFAqDAMIRQoCAAEEDmeLQQAh+QQJCgAwACwAAAAADAAMAIVXeZRefplff5lhgZtph59yjqV2kaeAmq6FnbGFnrGLorWNpLaQp7mRqLmYrb2essGgs8Klt8apusitvcquv8u2xNC7yNO8ydS8ytTAzdfBzdfM1t7N197Q2eDU3OPX3+XZ4ObZ4ebc4+jf5erg5erg5uvp7fDu8fPv8vTz9fb09vf19/j3+Pn4+fn5+vr6+/v///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRUCYcEgspkwjEKhUVJ1QsBNp0xm2VixiSOMRvlxFGAcTJook5eEHIhQcwpWIkAFQECkNy9AQWFwyEAkPRQ4FAwQIE2llQQAh+QQJCgAvACwAAAAADAAMAIVNcY5SdZFigptph6BvjKN0kKd8lquAmq+EnbGGn7KHn7ONpLaOpbearr+csMCdscCescGhtMOnuMauvsuzws60w862xdC9ytW/y9a/zNbCztjG0drH0tvK1N3M1t7N19/U3ePb4uff5urj6Ozk6e3l6u7m6u7o7PDq7vDt8PPv8vTw8vTw8/X19vf6+vv///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CXcEgsvlytVUplJLJIpSEDUESFTELBwSgCCQEV42kjDFiMo4uQsDB2MkLHoEHUTD7DRAHC8VAiZ0QSCgYIDxhNiUEAOw==":
IMAGE_PATH+"/spin.gif";Editor.globeImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiIvPjwvc3ZnPg==";
@@ -3057,8 +3061,8 @@ isVisible:function(a,b){return 1==a.vertices.length&&0==a.edges.length}},{name:"
e.isVertex(e.getParent(a.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(a,b){var e=0<a.vertices.length?b.editorUi.editor.graph.getCellGeometry(a.vertices[0]):null;return null!=e&&!e.relative}},
{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",
defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(a,b){var e=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null);return b.editorUi.editor.graph.isSwimlane(a.vertices[0])||null==e||e==mxConstants.NONE}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,b){return 0<a.vertices.length&&b.editorUi.editor.graph.isContainer(a.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n';
-Editor.createRoughCanvas=function(a){var b=rough.canvas({getContext:function(){return a}});b.draw=function(b){var e=b.sets||[];b=b.options||this.getDefaultOptions();for(var c=0;c<e.length;c++){var d=e[c];switch(d.type){case "path":null!=b.stroke&&this._drawToContext(a,d,b);break;case "fillPath":this._drawToContext(a,d,b);break;case "fillSketch":this.fillSketch(a,d,b)}}};b.fillSketch=function(b,e,c){var d=a.state.strokeColor,f=a.state.strokeWidth,g=a.state.strokeAlpha,u=a.state.dashed,m=c.fillWeight;
-0>m&&(m=c.strokeWidth/2);a.setStrokeAlpha(a.state.fillAlpha);a.setStrokeColor(c.fill||"");a.setStrokeWidth(m);a.setDashed(!1);this._drawToContext(b,e,c);a.setDashed(u);a.setStrokeWidth(f);a.setStrokeColor(d);a.setStrokeAlpha(g)};b._drawToContext=function(a,b,e){a.begin();for(var c=0;c<b.ops.length;c++){var d=b.ops[c],f=d.data;switch(d.op){case "move":a.moveTo(f[0],f[1]);break;case "bcurveTo":a.curveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case "lineTo":a.lineTo(f[0],f[1])}}a.end();"fillPath"===b.type&&
+Editor.createRoughCanvas=function(a){var b=rough.canvas({getContext:function(){return a}});b.draw=function(b){var e=b.sets||[];b=b.options||this.getDefaultOptions();for(var c=0;c<e.length;c++){var d=e[c];switch(d.type){case "path":null!=b.stroke&&this._drawToContext(a,d,b);break;case "fillPath":this._drawToContext(a,d,b);break;case "fillSketch":this.fillSketch(a,d,b)}}};b.fillSketch=function(b,e,c){var d=a.state.strokeColor,f=a.state.strokeWidth,g=a.state.strokeAlpha,t=a.state.dashed,m=c.fillWeight;
+0>m&&(m=c.strokeWidth/2);a.setStrokeAlpha(a.state.fillAlpha);a.setStrokeColor(c.fill||"");a.setStrokeWidth(m);a.setDashed(!1);this._drawToContext(b,e,c);a.setDashed(t);a.setStrokeWidth(f);a.setStrokeColor(d);a.setStrokeAlpha(g)};b._drawToContext=function(a,b,e){a.begin();for(var c=0;c<b.ops.length;c++){var d=b.ops[c],f=d.data;switch(d.op){case "move":a.moveTo(f[0],f[1]);break;case "bcurveTo":a.curveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case "lineTo":a.lineTo(f[0],f[1])}}a.end();"fillPath"===b.type&&
e.filled?a.fill():a.stroke()};return b};(function(){function a(b,e,c){this.canvas=b;this.rc=e;this.shape=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,a.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,a.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,a.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,a.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,a.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,a.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,a.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,a.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
a.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,a.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,a.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,a.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,a.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,a.prototype.fillAndStroke);
@@ -3068,7 +3072,7 @@ d=null;(e.filled=b)?(e.fill="none"===this.canvas.state.fillColor?"":this.canvas.
f);f=mxUtils.getValue(this.shape.style,"fillWeight",-1);e.fillWeight="auto"==f?-1:f;f=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==f&&(f=null!=this.shape.state?this.shape.state.view.graph.defaultPageBackgroundColor:"#ffffff",f=null!=e.fill&&(null!=d||null!=f&&e.fill.toLowerCase()==f.toLowerCase())?"solid":c.fillStyle);e.fillStyle=f;return e};a.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};a.prototype.end=function(){this.passThrough&&
this.originalEnd.apply(this.canvas,arguments)};a.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var a=2;a<arguments.length;a+=2)this.lastX=arguments[a-1],this.lastY=arguments[a],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};a.prototype.lineTo=function(a,b){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,a,b),this.lastX=a,this.lastY=b)};a.prototype.moveTo=
function(a,b){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,a,b),this.lastX=a,this.lastY=b,this.firstX=a,this.firstY=b)};a.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};a.prototype.quadTo=function(a,b,e,c){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,a,b,e,c),this.lastX=e,this.lastY=c)};a.prototype.curveTo=function(a,b,e,c,d,f){this.passThrough?
-this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,a,b,e,c,d,f),this.lastX=d,this.lastY=f)};a.prototype.arcTo=function(a,b,e,c,d,f,g){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,a,b,e,c,d,f,g);if(null!=m)for(var u=0;u<m.length;u+=6)this.curveTo(m[u],m[u+1],m[u+2],m[u+3],m[u+4],m[u+5]);this.lastX=f;this.lastY=g}};a.prototype.rect=function(a,b,e,c){this.passThrough?this.originalRect.apply(this.canvas,
+this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,a,b,e,c,d,f),this.lastX=d,this.lastY=f)};a.prototype.arcTo=function(a,b,e,c,d,f,g){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,a,b,e,c,d,f,g);if(null!=m)for(var t=0;t<m.length;t+=6)this.curveTo(m[t],m[t+1],m[t+2],m[t+3],m[t+4],m[t+5]);this.lastX=f;this.lastY=g}};a.prototype.rect=function(a,b,e,c){this.passThrough?this.originalRect.apply(this.canvas,
arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(a,b,e,c,this.getStyle(!0,!0)))};a.prototype.ellipse=function(a,b,e,c){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(a+e/2,b+c/2,e,c,this.getStyle(!0,!0)))};a.prototype.roundrect=function(a,b,e,c,d,f){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(a+d,b),this.lineTo(a+e-d,b),this.quadTo(a+e,b,a+e,b+f),this.lineTo(a+
e,b+c-f),this.quadTo(a+e,b+c,a+e-d,b+c),this.lineTo(a+d,b+c),this.quadTo(a,b+c,a,b+c-f),this.lineTo(a,b+f),this.quadTo(a,b,a+d,b))};a.prototype.drawPath=function(a){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),a)}catch(H){}this.passThrough=!1}else if(null!=this.nextShape){for(var b in a)this.nextShape.options[b]=a[b];null==a.stroke&&delete this.nextShape.options.stroke;a.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);
this.passThrough=!1}};a.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};a.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};a.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};a.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;
@@ -3079,7 +3083,7 @@ c||(b.save(),c=this.fill,d=this.stroke,this.stroke=this.fill=null,b.handJiggle.p
a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),d=[];if(null!=c&&0<c.length)for(var f=0;f<c.length;f++)if("mxgraph"==c[f].getAttribute("class")){d.push(c[f]);break}0<d.length&&(c=d[0].getAttribute("data-mxgraph"),null!=c?(d=JSON.parse(c),null!=d&&null!=d.xml&&(a=mxUtils.parseXml(d.xml),a=a.documentElement)):(d=d[0].getElementsByTagName("div"),0<d.length&&(c=mxUtils.getTextContent(d[0]),c=Graph.decompress(c,null,e),0<c.length&&(a=mxUtils.parseXml(c),a=a.documentElement))))}if(null!=
a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(d=null,"diagram"==a.nodeName?d=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&(d=c[Math.max(0,Math.min(c.length-1,urlParams.page||0))])),null!=
d&&(a=Editor.parseDiagramNode(d,e)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName||(a=null);return a};Editor.parseDiagramNode=function(a,b){var e=mxUtils.trim(mxUtils.getTextContent(a)),c=null;0<e.length?(e=Graph.decompress(e,null,b),null!=e&&0<e.length&&(c=mxUtils.parseXml(e).documentElement)):(e=mxUtils.getChildNodes(a),0<e.length&&(c=mxUtils.createXmlDocument(),c.appendChild(c.importNode(e[0],!0)),c=c.documentElement));return c};Editor.getDiagramNodeXml=function(a){var b=mxUtils.getTextContent(a),
-e=null;0<b.length?e=Graph.decompress(b):null!=a.firstChild&&(e=mxUtils.getXml(a.firstChild));return e};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a,!0);for(var b=null,e="",c=0,d=0,f=[],g=null;d<a.length;){var m=a.charCodeAt(d),d=d+1;10!=m&&(e+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(c)?c++:c=0;if(19==c){var u=a.indexOf("%3C%2Fmxfile%3E)",d)+15,d=d-9;if(u>d){b=a.substring(d,u);break}}10==m&&("endobj"==
+e=null;0<b.length?e=Graph.decompress(b):null!=a.firstChild&&(e=mxUtils.getXml(a.firstChild));return e};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a,!0);for(var b=null,e="",c=0,d=0,f=[],g=null;d<a.length;){var m=a.charCodeAt(d),d=d+1;10!=m&&(e+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(c)?c++:c=0;if(19==c){var t=a.indexOf("%3C%2Fmxfile%3E)",d)+15,d=d-9;if(t>d){b=a.substring(d,t);break}}10==m&&("endobj"==
e?g=null:"obj"==e.substring(e.length-3,e.length)||"xref"==e||"trailer"==e?(g=[],f[e.split(" ")[0]]=g):null!=g&&g.push(e),e="")}null==b&&(b=Editor.extractGraphModelFromXref(f));null!=b&&(b=decodeURIComponent(b.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return b};Editor.extractGraphModelFromXref=function(a){var b=a.trailer,e=null;null!=b&&(b=/.* \/Info (\d+) (\d+) R/g.exec(b.join("\n")),null!=b&&0<b.length&&(b=a[b[1]],null!=b&&(b=/.* \/Subject (\d+) (\d+) R/g.exec(b.join("\n")),null!=b&&0<b.length&&
(a=a[b[1]],null!=a&&(a=a.join("\n"),e=a.substring(1,a.length-1))))));return e};Editor.extractGraphModelFromPng=function(a){var b=null;try{var e=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,e,d){a=c.substring(a+8,a+8+d);"zTXt"==e?(d=a.indexOf(String.fromCharCode(0)),"mxGraphModel"==a.substring(0,d)&&(a=pako.inflateRaw(a.substring(d+2),{to:"string"}).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==e&&
(a=a.split(String.fromCharCode(0)),1<a.length&&("mxGraphModel"==a[0]||"mxfile"==a[0])&&(b=a[1]));if(null!=b||"IDAT"==e)return!0}))}catch(O){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.extractParserError=function(a,b){var e=null,c=null!=a?a.getElementsByTagName("parsererror"):null;null!=c&&0<c.length&&(e=b||mxResources.get("invalidChars"),c=c[0].getElementsByTagName("div"),0<c.length&&(e=mxUtils.getTextContent(c[0])));
@@ -3118,11 +3122,11 @@ else if("eot"==m||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";els
function(a){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(b){this.resolvedFontCss=b;a()})):a()};Editor.prototype.embedExtFonts=function(a){var b=this.graph.extFonts;if(null!=b&&0<b.length){var e="",c=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var d=mxUtils.bind(this,function(){0==c&&this.embedCssFonts(e,a)}),f=0;f<b.length;f++)mxUtils.bind(this,function(a,b){0==b.indexOf(Editor.GOOGLE_FONTS)?null==this.cachedGoogleFonts[b]?
(c++,this.loadUrl(b,mxUtils.bind(this,function(a){this.cachedGoogleFonts[b]=a;e+=a;c--;d()}),mxUtils.bind(this,function(a){c--;e+="@import url("+b+");";d()}))):e+=this.cachedGoogleFonts[b]:e+='@font-face {font-family: "'+a+'";src: url("'+b+'");}'})(b[f].name,b[f].url);d()}else a()};Editor.prototype.addMathCss=function(a){a=a.getElementsByTagName("defs");if(null!=a&&0<a.length)for(var b=document.getElementsByTagName("style"),e=0;e<b.length;e++)0<mxUtils.getTextContent(b[e]).indexOf("MathJax")&&a[0].appendChild(b[e].cloneNode(!0))};
Editor.prototype.addFontCss=function(a,b){b=null!=b?b:this.absoluteCssFonts(this.fontCss);if(null!=b){var e=a.getElementsByTagName("defs"),c=a.ownerDocument;0==e.length?(e=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"defs"):c.createElement("defs"),null!=a.firstChild?a.insertBefore(e,a.firstChild):a.appendChild(e)):e=e[0];c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,b);e.appendChild(c)}};
-Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,b,e,c,d,f,g,m,n,p,t,l,k,x,v,y){try{f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:this.graph;k=null!=k?k:0;var u=n?null:l.background;u==mxConstants.NONE&&(u=null);null==u&&(u=c);null==u&&0==n&&(u=y?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(l.getSvg(null,null,null,x,null,g,null,null,null,p,null,y),mxUtils.bind(this,function(e){try{var c=
-new Image;c.onload=mxUtils.bind(this,function(){try{var g=function(){mxClient.IS_SF?window.setTimeout(function(){x.drawImage(c,k/m,k/m);a(n)},0):(x.drawImage(c,k/m,k/m),a(n))},n=document.createElement("canvas"),p=parseInt(e.getAttribute("width")),t=parseInt(e.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=f?Math.min(1,Math.min(3*b/(4*t),b/p)):b/p);p=Math.ceil(m*p)+2*k;t=Math.ceil(m*t)+2*k;n.setAttribute("width",p);n.setAttribute("height",t);var x=n.getContext("2d");null!=u&&(x.beginPath(),x.rect(0,
-0,p,t),x.fillStyle=u,x.fill());x.scale(m,m);if(v){var y=l.view,B=y.scale;y.scale=1;var A=btoa(unescape(encodeURIComponent(y.createSvgGrid(y.gridColor))));y.scale=B;var A="data:image/svg+xml;base64,"+A,q=l.gridSize*y.gridSteps*m,z=l.getGraphBounds(),K=y.translate.x*B,E=y.translate.y*B,C=K+(z.x-K)/B,H=E+(z.y-E)/B,D=new Image;D.onload=function(){try{for(var a=-Math.round(q-mxUtils.mod((K-C)*m,q)),b=-Math.round(q-mxUtils.mod((E-H)*m,q));a<p;a+=q)for(var e=b;e<t;e+=q)x.drawImage(D,a/m,e/m);g()}catch(ma){null!=
+Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,b,e,c,d,f,g,m,n,p,u,l,k,v,x,y){try{f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:this.graph;k=null!=k?k:0;var t=n?null:l.background;t==mxConstants.NONE&&(t=null);null==t&&(t=c);null==t&&0==n&&(t=y?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(l.getSvg(null,null,null,v,null,g,null,null,null,p,null,y),mxUtils.bind(this,function(e){try{var c=
+new Image;c.onload=mxUtils.bind(this,function(){try{var g=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(c,k/m,k/m);a(n)},0):(v.drawImage(c,k/m,k/m),a(n))},n=document.createElement("canvas"),p=parseInt(e.getAttribute("width")),u=parseInt(e.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=f?Math.min(1,Math.min(3*b/(4*u),b/p)):b/p);p=Math.ceil(m*p)+2*k;u=Math.ceil(m*u)+2*k;n.setAttribute("width",p);n.setAttribute("height",u);var v=n.getContext("2d");null!=t&&(v.beginPath(),v.rect(0,
+0,p,u),v.fillStyle=t,v.fill());v.scale(m,m);if(x){var y=l.view,B=y.scale;y.scale=1;var A=btoa(unescape(encodeURIComponent(y.createSvgGrid(y.gridColor))));y.scale=B;var A="data:image/svg+xml;base64,"+A,q=l.gridSize*y.gridSteps*m,z=l.getGraphBounds(),K=y.translate.x*B,E=y.translate.y*B,C=K+(z.x-K)/B,H=E+(z.y-E)/B,D=new Image;D.onload=function(){try{for(var a=-Math.round(q-mxUtils.mod((K-C)*m,q)),b=-Math.round(q-mxUtils.mod((E-H)*m,q));a<p;a+=q)for(var e=b;e<u;e+=q)v.drawImage(D,a/m,e/m);g()}catch(ma){null!=
d&&d(ma)}};D.onerror=function(a){null!=d&&d(a)};D.src=A}else g()}catch(pa){null!=d&&d(pa)}});c.onerror=function(a){null!=d&&d(a)};p&&this.graph.addSvgShadow(e);this.graph.mathEnabled&&this.addMathCss(e);var g=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(e,this.resolvedFontCss),c.src=Editor.createSvgDataUri(mxUtils.getXml(e))}catch(P){null!=d&&d(P)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.addFontCss(e,a),this.loadFonts(g)}catch(T){null!=
-d&&d(T)}}))}catch(P){null!=d&&d(P)}}),e,t)}catch(Q){null!=d&&d(Q)}};Editor.crcTable=[];for(var k=0;256>k;k++)for(var l=k,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[k]=l;Editor.updateCRC=function(a,b,e,c){for(var d=0;d<c;d++)a=Editor.crcTable[(a^b.charCodeAt(e+d))&255]^a>>>8;return a};Editor.crc32=function(a){for(var b=-1,e=0;e<a.length;e++)b=b>>>8^Editor.crcTable[(b^a.charCodeAt(e))&255];return(b^-1)>>>0};Editor.writeGraphModelToPng=function(a,b,e,c,d){function f(a,b){var e=n;n+=
+d&&d(T)}}))}catch(P){null!=d&&d(P)}}),e,u)}catch(Q){null!=d&&d(Q)}};Editor.crcTable=[];for(var k=0;256>k;k++)for(var l=k,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[k]=l;Editor.updateCRC=function(a,b,e,c){for(var d=0;d<c;d++)a=Editor.crcTable[(a^b.charCodeAt(e+d))&255]^a>>>8;return a};Editor.crc32=function(a){for(var b=-1,e=0;e<a.length;e++)b=b>>>8^Editor.crcTable[(b^a.charCodeAt(e))&255];return(b^-1)>>>0};Editor.writeGraphModelToPng=function(a,b,e,c,d){function f(a,b){var e=n;n+=
b;return a.substring(e,n)}function g(a){a=f(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function m(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(f(a,4),"IHDR"!=f(a,4))null!=d&&d();else{f(a,17);d=a.substring(0,n);do{var p=g(a);if("IDAT"==f(a,4)){d=a.substring(0,
n-8);"pHYs"==b&&"dpi"==e?(e=Math.round(c/.0254),e=m(e)+m(e)+String.fromCharCode(1)):e=e+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+c;c=4294967295;c=Editor.updateCRC(c,b,0,4);c=Editor.updateCRC(c,e,0,e.length);d+=m(e.length)+b+e+m(c^4294967295);d+=a.substring(n-8,a.length);break}d+=a.substring(n-8,n-4+p);f(a,p);f(a,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";
var b=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,e){b.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var e=null;null!=a.editor.graph.getModel().getParent(b)?e=b.getId():null!=a.currentPage&&
@@ -3155,34 +3159,34 @@ stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8
gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,e){if(null!=b){var c=function(a){if(null!=a)if(e)for(var c=
0;c<a.length;c++)b[a[c].name]=a[c];else for(var d in b){for(var f=!1,c=0;c<a.length;c++)if(a[c].name==d&&a[c].type==b[d].type){f=!0;break}f||delete b[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties=d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),
c(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{c(JSON.parse(a))}catch(H){}}};var v=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));v.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},e=a.vertices,c=a.edges,d=0;d<e.length;d++)this.findCommonProperties(e[d],b,0==d);for(d=0;d<c.length;d++)this.findCommonProperties(c[d],
-b,0==e.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var t=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");
-b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return t.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=
-function(a,b,e){function c(a,b,e,c){u.getModel().beginUpdate();try{var d=[],f=[];if(null!=e.index){for(var g=[],m=e.parentRow.nextSibling;m&&m.getAttribute("data-pName")==a;)g.push(m.getAttribute("data-pValue")),m=m.nextSibling;e.index<g.length?null!=c?g.splice(c,1):g[e.index]=b:g.push(b);null!=e.size&&g.length>e.size&&(g=g.slice(0,e.size));b=g.join(",");null!=e.countProperty&&(u.setCellStyles(e.countProperty,g.length,u.getSelectionCells()),d.push(e.countProperty),f.push(g.length))}u.setCellStyles(a,
-b,u.getSelectionCells());d.push(a);f.push(b);if(null!=e.dependentProps)for(a=0;a<e.dependentProps.length;a++){var n=e.dependentPropsDefVal[a],p=e.dependentPropsVals[a];if(p.length>b)p=p.slice(0,b);else for(var l=p.length;l<b;l++)p.push(n);p=p.join(",");u.setCellStyles(e.dependentProps[a],p,u.getSelectionCells());d.push(e.dependentProps[a]);f.push(p)}if("function"==typeof e.onChange)e.onChange(u,b);t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",f,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}
-function d(b,e,c){var d=mxUtils.getOffset(a,!0),f=mxUtils.getOffset(b,!0);e.style.position="absolute";e.style.left=f.x-d.x+"px";e.style.top=f.y-d.y+"px";e.style.width=b.offsetWidth+"px";e.style.height=b.offsetHeight-(c?4:0)+"px";e.style.zIndex=5}function f(a,b,e){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,
-function(f){this.editorUi.pickColor(b,function(b){d.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;c(a,b,e)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function g(a,b,e,d,f,g,m){null!=b&&(b=b.split(","),l.push({name:a,values:b,type:e,defVal:d,countProperty:f,parentRow:g,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(t,function(b){for(var n=g,t=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==
-a)n=n.nextSibling,t++;else break;var u={type:e,parentRow:g,index:t,isDeletable:!0,defVal:d,countProperty:f},t=p(a,"",u,0==t%2,m);c(a,d,u);n.parentNode.insertBefore(t,n.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(a,b,e,c,d,f,g){if(0<d){var m=Array(d);b=null!=b?b.split(","):[];for(var n=0;n<d;n++)m[n]=null!=b[n]?b[n]:null!=c?c:"";l.push({name:a,values:m,type:e,defVal:c,parentRow:f,flipBkg:g,size:d})}return document.createElement("div")}
-function n(a,b,e){var d=document.createElement("input");d.type="checkbox";d.checked="1"==b;mxEvent.addListener(d,"change",function(){c(a,d.checked?"1":"0",e)});return d}function p(b,e,p,u,l){var k=p.dispName,x=p.type,v=document.createElement("tr");v.className="gePropRow"+(l?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";v.setAttribute("data-pName",b);v.setAttribute("data-pValue",e);u=!1;null!=p.index&&(v.setAttribute("data-index",p.index),k=(null!=k?k:"")+"["+p.index+"]",u=!0);var y=document.createElement("td");
-y.className="gePropRowCell";y.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));u&&(y.style.textAlign="right");v.appendChild(y);y=document.createElement("td");y.className="gePropRowCell";if("color"==x)y.appendChild(f(b,e,p));else if("bool"==x||"boolean"==x)y.appendChild(n(b,e,p));else if("enum"==x){var B=p.enumList;for(l=0;l<B.length;l++)if(k=B[l],k.val==e){y.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(y,"click",mxUtils.bind(t,function(){var f=
-document.createElement("select");d(y,f);for(var g=0;g<B.length;g++){var m=B[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(m.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(m.dispName,null,m.dispName));f.appendChild(n)}f.value=e;a.appendChild(f);mxEvent.addListener(f,"change",function(){var a=mxUtils.htmlEntities(f.value);c(b,a,p)});f.focus();mxEvent.addListener(f,"blur",function(){a.removeChild(f)})}))}else"dynamicArr"==x?y.appendChild(g(b,e,p.subType,p.subDefVal,p.countProperty,
-v,l)):"staticArr"==x?y.appendChild(m(b,e,p.subType,p.subDefVal,p.size,v,l)):(y.innerHTML=e,mxEvent.addListener(y,"click",mxUtils.bind(t,function(){function f(){var a=g.value,a=0==a.length&&"string"!=x?0:a;p.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");c(b,a,p)}var g=document.createElement("input");d(y,g,!0);g.value=e;g.className=
-"gePropEditor";"int"!=x&&"float"!=x||p.allowAuto||(g.type="number",g.step="int"==x?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&f()});g.focus();mxEvent.addListener(g,"blur",function(){f()})})));p.isDeletable&&(l=mxUtils.button("-",mxUtils.bind(t,function(a){c(b,"",p,p.index);mxEvent.consume(a)})),l.style.height="16px",l.style.width="25px",l.style["float"]="right",l.className="geColorBtn",
-y.appendChild(l));v.appendChild(y);return v}var t=this,u=this.editorUi.editor.graph,l=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.className="geProperties";k.style.whiteSpace="nowrap";k.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var v=document.createElement("th");v.className="gePropHeaderCell";var y=document.createElement("img");y.src=Sidebar.prototype.expandedImage;v.appendChild(y);mxUtils.write(v,mxResources.get("property"));
-x.style.cursor="pointer";var B=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),e;if(t.editorUi.propertiesCollapsed){y.src=Sidebar.prototype.collapsedImage;e="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var d=a.childNodes[c],f=d.nodeName.toUpperCase();"INPUT"!=f&&"SELECT"!=f||a.removeChild(d)}catch(qa){}}else y.src=Sidebar.prototype.expandedImage,e="";for(c=0;c<b.length;c++)b[c].style.display=e};mxEvent.addListener(x,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;
-B()});x.appendChild(v);v=document.createElement("th");v.className="gePropHeaderCell";v.innerHTML=mxResources.get("value");x.appendChild(v);k.appendChild(x);var A=!1,q=!1,z;for(z in b)if(x=b[z],"function"!=typeof x.isVisible||x.isVisible(e,this)){var E=null!=e.style[z]?mxUtils.htmlEntities(e.style[z]+""):null!=x.getDefaultValue?x.getDefaultValue(e,this):x.defVal;if("separator"==x.type)q=!q;else{if("staticArr"==x.type)x.size=parseInt(e.style[x.sizeProperty]||b[x.sizeProperty].defVal)||0;else if(null!=
-x.dependentProps){for(var C=x.dependentProps,D=[],K=[],v=0;v<C.length;v++){var G=e.style[C[v]];K.push(b[C[v]].subDefVal);D.push(null!=G?G.split(","):[])}x.dependentPropsDefVal=K;x.dependentPropsVals=D}k.appendChild(p(z,E,x,A,q));A=!A}}for(v=0;v<l.length;v++)for(x=l[v],b=x.parentRow,e=0;e<x.values.length;e++)z=p(x.name,x.values[e],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:e,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==e%2,x.flipBkg),b.parentNode.insertBefore(z,
+b,0==e.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var u=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");
+b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return u.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=
+function(a,b,e){function c(a,b,e,c){t.getModel().beginUpdate();try{var d=[],f=[];if(null!=e.index){for(var g=[],m=e.parentRow.nextSibling;m&&m.getAttribute("data-pName")==a;)g.push(m.getAttribute("data-pValue")),m=m.nextSibling;e.index<g.length?null!=c?g.splice(c,1):g[e.index]=b:g.push(b);null!=e.size&&g.length>e.size&&(g=g.slice(0,e.size));b=g.join(",");null!=e.countProperty&&(t.setCellStyles(e.countProperty,g.length,t.getSelectionCells()),d.push(e.countProperty),f.push(g.length))}t.setCellStyles(a,
+b,t.getSelectionCells());d.push(a);f.push(b);if(null!=e.dependentProps)for(a=0;a<e.dependentProps.length;a++){var n=e.dependentPropsDefVal[a],p=e.dependentPropsVals[a];if(p.length>b)p=p.slice(0,b);else for(var l=p.length;l<b;l++)p.push(n);p=p.join(",");t.setCellStyles(e.dependentProps[a],p,t.getSelectionCells());d.push(e.dependentProps[a]);f.push(p)}if("function"==typeof e.onChange)e.onChange(t,b);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",f,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}
+function d(b,e,c){var d=mxUtils.getOffset(a,!0),f=mxUtils.getOffset(b,!0);e.style.position="absolute";e.style.left=f.x-d.x+"px";e.style.top=f.y-d.y+"px";e.style.width=b.offsetWidth+"px";e.style.height=b.offsetHeight-(c?4:0)+"px";e.style.zIndex=5}function f(a,b,e){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,
+function(f){this.editorUi.pickColor(b,function(b){d.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;c(a,b,e)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function g(a,b,e,d,f,g,m){null!=b&&(b=b.split(","),l.push({name:a,values:b,type:e,defVal:d,countProperty:f,parentRow:g,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(u,function(b){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==
+a)n=n.nextSibling,u++;else break;var t={type:e,parentRow:g,index:u,isDeletable:!0,defVal:d,countProperty:f},u=p(a,"",t,0==u%2,m);c(a,d,t);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(a,b,e,c,d,f,g){if(0<d){var m=Array(d);b=null!=b?b.split(","):[];for(var n=0;n<d;n++)m[n]=null!=b[n]?b[n]:null!=c?c:"";l.push({name:a,values:m,type:e,defVal:c,parentRow:f,flipBkg:g,size:d})}return document.createElement("div")}
+function n(a,b,e){var d=document.createElement("input");d.type="checkbox";d.checked="1"==b;mxEvent.addListener(d,"change",function(){c(a,d.checked?"1":"0",e)});return d}function p(b,e,p,t,l){var k=p.dispName,v=p.type,x=document.createElement("tr");x.className="gePropRow"+(l?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";x.setAttribute("data-pName",b);x.setAttribute("data-pValue",e);t=!1;null!=p.index&&(x.setAttribute("data-index",p.index),k=(null!=k?k:"")+"["+p.index+"]",t=!0);var y=document.createElement("td");
+y.className="gePropRowCell";y.innerHTML=mxUtils.htmlEntities(mxResources.get(k,null,k));t&&(y.style.textAlign="right");x.appendChild(y);y=document.createElement("td");y.className="gePropRowCell";if("color"==v)y.appendChild(f(b,e,p));else if("bool"==v||"boolean"==v)y.appendChild(n(b,e,p));else if("enum"==v){var B=p.enumList;for(l=0;l<B.length;l++)if(k=B[l],k.val==e){y.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(y,"click",mxUtils.bind(u,function(){var f=
+document.createElement("select");d(y,f);for(var g=0;g<B.length;g++){var m=B[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(m.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(m.dispName,null,m.dispName));f.appendChild(n)}f.value=e;a.appendChild(f);mxEvent.addListener(f,"change",function(){var a=mxUtils.htmlEntities(f.value);c(b,a,p)});f.focus();mxEvent.addListener(f,"blur",function(){a.removeChild(f)})}))}else"dynamicArr"==v?y.appendChild(g(b,e,p.subType,p.subDefVal,p.countProperty,
+x,l)):"staticArr"==v?y.appendChild(m(b,e,p.subType,p.subDefVal,p.size,x,l)):(y.innerHTML=e,mxEvent.addListener(y,"click",mxUtils.bind(u,function(){function f(){var a=g.value,a=0==a.length&&"string"!=v?0:a;p.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",v="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==v?parseInt(a):a)+"");c(b,a,p)}var g=document.createElement("input");d(y,g,!0);g.value=e;g.className=
+"gePropEditor";"int"!=v&&"float"!=v||p.allowAuto||(g.type="number",g.step="int"==v?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&f()});g.focus();mxEvent.addListener(g,"blur",function(){f()})})));p.isDeletable&&(l=mxUtils.button("-",mxUtils.bind(u,function(a){c(b,"",p,p.index);mxEvent.consume(a)})),l.style.height="16px",l.style.width="25px",l.style["float"]="right",l.className="geColorBtn",
+y.appendChild(l));x.appendChild(y);return x}var u=this,t=this.editorUi.editor.graph,l=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.className="geProperties";k.style.whiteSpace="nowrap";k.style.width="100%";var v=document.createElement("tr");v.className="gePropHeader";var x=document.createElement("th");x.className="gePropHeaderCell";var y=document.createElement("img");y.src=Sidebar.prototype.expandedImage;x.appendChild(y);mxUtils.write(x,mxResources.get("property"));
+v.style.cursor="pointer";var B=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),e;if(u.editorUi.propertiesCollapsed){y.src=Sidebar.prototype.collapsedImage;e="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var d=a.childNodes[c],f=d.nodeName.toUpperCase();"INPUT"!=f&&"SELECT"!=f||a.removeChild(d)}catch(qa){}}else y.src=Sidebar.prototype.expandedImage,e="";for(c=0;c<b.length;c++)b[c].style.display=e};mxEvent.addListener(v,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;
+B()});v.appendChild(x);x=document.createElement("th");x.className="gePropHeaderCell";x.innerHTML=mxResources.get("value");v.appendChild(x);k.appendChild(v);var A=!1,q=!1,z;for(z in b)if(v=b[z],"function"!=typeof v.isVisible||v.isVisible(e,this)){var E=null!=e.style[z]?mxUtils.htmlEntities(e.style[z]+""):null!=v.getDefaultValue?v.getDefaultValue(e,this):v.defVal;if("separator"==v.type)q=!q;else{if("staticArr"==v.type)v.size=parseInt(e.style[v.sizeProperty]||b[v.sizeProperty].defVal)||0;else if(null!=
+v.dependentProps){for(var C=v.dependentProps,D=[],K=[],x=0;x<C.length;x++){var G=e.style[C[x]];K.push(b[C[x]].subDefVal);D.push(null!=G?G.split(","):[])}v.dependentPropsDefVal=K;v.dependentPropsVals=D}k.appendChild(p(z,E,v,A,q));A=!A}}for(x=0;x<l.length;x++)for(v=l[x],b=v.parentRow,e=0;e<v.values.length;e++)z=p(v.name,v.values[e],{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable,index:e,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==e%2,v.flipBkg),b.parentNode.insertBefore(z,
b.nextSibling),b=z;a.appendChild(k);B();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var e=this.editorUi,c=e.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d);
-var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.position="relative";g.style.textAlign="center";for(var m=[],p=0;p<this.defaultColorSchemes.length;p++){var n=document.createElement("div");n.style.display="inline-block";n.style.width="6px";n.style.height="6px";n.style.marginLeft="4px";n.style.marginRight=
-"3px";n.style.borderRadius="3px";n.style.cursor="pointer";n.style.background="transparent";n.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a){mxEvent.addListener(n,"click",mxUtils.bind(this,function(){t(a)}))})(p);mxEvent.add;m.push(n);g.appendChild(n)}var t=mxUtils.bind(this,function(a){null!=this.editorUi.currentScheme&&(m[this.editorUi.currentScheme].style.background="transparent");this.editorUi.currentScheme=a;l(this.defaultColorSchemes[this.editorUi.currentScheme]);m[this.editorUi.currentScheme].style.background=
-"#84d7ff"}),l=mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(a){var b=mxUtils.button("",function(b){c.getModel().beginUpdate();try{for(var d=c.getSelectionCells(),g=0;g<d.length;g++){for(var m=c.getModel().getStyle(d[g]),n=0;n<f.length;n++)m=mxUtils.removeStylename(m,f[n]);var p=c.getModel().isVertex(d[g])?e.initialDefaultVertexStyle:e.initialdefaultEdgeStyle;null!=a?(m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,
+var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.position="relative";g.style.textAlign="center";for(var m=[],n=0;n<this.defaultColorSchemes.length;n++){var p=document.createElement("div");p.style.display="inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight=
+"3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){u(a)}))})(n);mxEvent.add;m.push(p);g.appendChild(p)}var u=mxUtils.bind(this,function(a){null!=this.editorUi.currentScheme&&(m[this.editorUi.currentScheme].style.background="transparent");this.editorUi.currentScheme=a;t(this.defaultColorSchemes[this.editorUi.currentScheme]);m[this.editorUi.currentScheme].style.background=
+"#84d7ff"}),t=mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(a){var b=mxUtils.button("",function(b){c.getModel().beginUpdate();try{for(var d=c.getSelectionCells(),g=0;g<d.length;g++){for(var m=c.getModel().getStyle(d[g]),n=0;n<f.length;n++)m=mxUtils.removeStylename(m,f[n]);var p=c.getModel().isVertex(d[g])?e.initialDefaultVertexStyle:e.initialdefaultEdgeStyle;null!=a?(m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,
null)),mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||(m=""==a.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,null))),mxEvent.isShiftDown(b)||(m=""==a.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null))),!mxEvent.isAltDown(b)&&c.getModel().isVertex(d[g])&&
(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null)))):(m=mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(d[g])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,
mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));c.getModel().setStyle(d[g],m)}}finally{c.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage=
"linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=""==a.fill?mxUtils.getValue(e.initialDefaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(e.initialDefaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),b.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(e.initialDefaultVertexStyle,
mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(e.initialDefaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var g=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),m=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=g;b.style.border="1px solid "+m}d.appendChild(b)});d.innerHTML="";for(var g=0;g<a.length;g++)0<g&&0==mxUtils.mod(g,
-4)&&mxUtils.br(d),b(a[g])});null==this.editorUi.currentScheme?t("dark"==uiTheme?1:0):t(this.editorUi.currentScheme);var p=10>=this.defaultColorSchemes.length?28:8,u=document.createElement("div");u.style.cssText="position:absolute;left:10px;top:8px;bottom:"+p+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
-mxEvent.addListener(u,"click",mxUtils.bind(this,function(){t(mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length))}));var k=document.createElement("div");k.style.cssText="position:absolute;left:202px;top:8px;bottom:"+p+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
-1<this.defaultColorSchemes.length&&(a.appendChild(u),a.appendChild(k));mxEvent.addListener(k,"click",mxUtils.bind(this,function(){t(mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length))}));b(u);b(k);l(this.defaultColorSchemes[this.editorUi.currentScheme]);10>=this.defaultColorSchemes.length&&a.appendChild(g);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),e=null;1==this.editorUi.editor.graph.getSelectionCount()&&(e=mxUtils.button(mxResources.get("editStyle"),
+4)&&mxUtils.br(d),b(a[g])});null==this.editorUi.currentScheme?u("dark"==uiTheme?1:0):u(this.editorUi.currentScheme);var n=10>=this.defaultColorSchemes.length?28:8,l=document.createElement("div");l.style.cssText="position:absolute;left:10px;top:8px;bottom:"+n+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
+mxEvent.addListener(l,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length))}));var k=document.createElement("div");k.style.cssText="position:absolute;left:202px;top:8px;bottom:"+n+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
+1<this.defaultColorSchemes.length&&(a.appendChild(l),a.appendChild(k));mxEvent.addListener(k,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length))}));b(l);b(k);t(this.defaultColorSchemes[this.editorUi.currentScheme]);10>=this.defaultColorSchemes.length&&a.appendChild(g);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),e=null;1==this.editorUi.editor.graph.getSelectionCount()&&(e=mxUtils.button(mxResources.get("editStyle"),
mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),e.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),e.style.width="202px",e.style.marginBottom="2px",a.appendChild(e));var c=this.editorUi.editor.graph,d=c.view.getState(c.getSelectionCell());1==c.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editShape").funct()})),
b.setAttribute("title",mxResources.get("editShape")),b.style.marginBottom="2px",null==e?b.style.width="202px":(e.style.width="100px",b.style.width="100px",b.style.marginLeft="2px"),a.appendChild(b)):b.image&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==e?b.style.width="202px":(e.style.width="100px",b.style.width="100px",b.style.marginLeft=
"2px"),a.appendChild(b));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=urlParams.edge;var x=Graph.prototype.init;
@@ -3192,9 +3196,9 @@ if(null!=b){if("rack"==b.childLayout){var e=new mxStackLayout(this.graph,!1);e.g
2,e.columns=b.tableColumns||2,e.colPercentages=b.colPercentages,e.rowPercentages=b.rowPercentages,e.equalColumns="1"==mxUtils.getValue(b,"equalColumns",e.colPercentages?"0":"1"),e.equalRows="1"==mxUtils.getValue(b,"equalRows",e.rowPercentages?"0":"1"),e.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),e.border=b.tableBorder||e.border,e.marginLeft=b.marginLeft||0,e.marginRight=b.marginRight||0,e.marginTop=b.marginTop||0,e.marginBottom=b.marginBottom||0,e.autoAddCol="1"==mxUtils.getValue(b,
"autoAddCol","0"),e.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",e.autoAddCol?"0":"1"),e.colWidths=b.colWidths||"100",e.rowHeights=b.rowHeights||"50",e}return c.apply(this,arguments)};this.updateGlobalUrlVariables()};var y=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return y.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=
null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=a)for(var b in a)this.globalVars[b]=a[b]}catch(B){null!=window.console&&console.log("Error in vars URL parameter: "+B)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var E=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=E.apply(this,arguments);null==b&&null!=this.globalVars&&(b=this.globalVars[a]);
-return b};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var z=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,b,e,c,d,f,g,m,p,n,t,l){var u=null;l||null==this.themes||"darkTheme"!=this.defaultThemeName||(u=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),
-this.refresh());var k=z.apply(this,arguments);if(t&&null!=this.extFonts&&0<this.extFonts.length){var x=k.ownerDocument,v=null!=x.createElementNS?x.createElementNS(mxConstants.NS_SVG,"style"):x.createElement("style");null!=x.setAttributeNS?v.setAttributeNS("type","text/css"):v.setAttribute("type","text/css");for(var y="",B="",A=0;A<this.extFonts.length;A++){var q=this.extFonts[A].name,E=this.extFonts[A].url;0==E.indexOf(Editor.GOOGLE_FONTS)?y+="@import url("+E+");\n":B+='@font-face {\nfont-family: "'+
-q+'";\nsrc: url("'+E+'");\n}\n'}v.appendChild(x.createTextNode(y+B));k.getElementsByTagName("defs")[0].appendChild(v)}null!=u&&(this.stylesheet=u,this.refresh());return k};var C=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=C.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var b=a.drawText;a.drawText=function(a,e){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&&(mxUtils.isNode(a.text.value)||a.text.dialect==
+return b};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var z=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,b,e,c,d,f,g,m,n,p,u,l){var t=null;l||null==this.themes||"darkTheme"!=this.defaultThemeName||(t=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),
+this.refresh());var k=z.apply(this,arguments);if(u&&null!=this.extFonts&&0<this.extFonts.length){var v=k.ownerDocument,x=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"style"):v.createElement("style");null!=v.setAttributeNS?x.setAttributeNS("type","text/css"):x.setAttribute("type","text/css");for(var y="",B="",A=0;A<this.extFonts.length;A++){var q=this.extFonts[A].name,E=this.extFonts[A].url;0==E.indexOf(Editor.GOOGLE_FONTS)?y+="@import url("+E+");\n":B+='@font-face {\nfont-family: "'+
+q+'";\nsrc: url("'+E+'");\n}\n'}x.appendChild(v.createTextNode(y+B));k.getElementsByTagName("defs")[0].appendChild(x)}null!=t&&(this.stylesheet=t,this.refresh());return k};var C=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=C.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var b=a.drawText;a.drawText=function(a,e){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&&(mxUtils.isNode(a.text.value)||a.text.dialect==
mxConstants.DIALECT_STRICTHTML)){var c=a.text.getContentNode();if(null!=c){c=c.cloneNode(!0);if(c.getElementsByTagNameNS)for(var d=c.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<d.length;)d[0].parentNode.removeChild(d[0]);null!=c.innerHTML&&(d=a.text.value,a.text.value=c.innerHTML,b.apply(this,arguments),a.text.value=d)}}else b.apply(this,arguments)}}return a};var A=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){A.apply(this,
arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),
this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var D=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){D.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),
@@ -3203,8 +3207,8 @@ null!=a.actions)){for(var b=0;b<a.actions.length;b++){var e=a.actions[b];if(null
this.getLinkForCell(b);null!=e&&"data:action/json,"==e.substring(0,17)&&this.setLinkForCell(b,this.updateCustomLink(a,e));if(this.isHtmlLabel(b)){var c=document.createElement("div");c.innerHTML=this.sanitizeHtml(this.getLabel(b));for(var d=c.getElementsByTagName("a"),f=!1,g=0;g<d.length;g++)e=d[g].getAttribute("href"),null!=e&&"data:action/json,"==e.substring(0,17)&&(d[g].setAttribute("href",this.updateCustomLink(a,e)),f=!0);f&&this.labelChanged(b,c.innerHTML)}};Graph.prototype.updateCustomLink=function(a,
b){if("data:action/json,"==b.substring(0,17))try{var e=JSON.parse(b.substring(17));null!=e.actions&&(this.updateCustomLinkActions(a,e.actions),b="data:action/json,"+JSON.stringify(e))}catch(L){}return b};Graph.prototype.updateCustomLinkActions=function(a,b){for(var e=0;e<b.length;e++){var c=b[e];this.updateCustomLinkAction(a,c.toggle);this.updateCustomLinkAction(a,c.show);this.updateCustomLinkAction(a,c.hide);this.updateCustomLinkAction(a,c.select);this.updateCustomLinkAction(a,c.highlight);this.updateCustomLinkAction(a,
c.scroll)}};Graph.prototype.updateCustomLinkAction=function(a,b){if(null!=b&&null!=b.cells){for(var e=[],c=0;c<b.cells.length;c++)if("*"==b.cells[c])e.push(b.cells[c]);else{var d=a[b.cells[c]];null!=d?""!=d&&e.push(d):e.push(b.cells[c])}b.cells=e}};Graph.prototype.getCellsForAction=function(a,b){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags,null,null,b))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var e=0;e<a.length;e++)if("*"==a[e])var c=this.getDefaultParent(),
-b=b.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var d=this.model.getCell(a[e]);null!=d&&b.push(d)}return b};Graph.prototype.getCellsForTags=function(a,b,e,c){var d=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());e=null!=e?e:"tags";for(var f=0,g={},m=0;m<a.length;m++)0<a[m].length&&(g[a[m].toLowerCase()]=!0,f++);for(m=0;m<b.length;m++)if(c&&this.model.getParent(b[m])==this.model.root||this.model.isVertex(b[m])||this.model.isEdge(b[m])){var p=null!=
-b[m].value&&"object"==typeof b[m].value?mxUtils.trim(b[m].value.getAttribute(e)||""):"",n=!1;if(0<p.length){if(p=p.toLowerCase().split(" "),p.length>=a.length){for(var t=n=0;t<p.length&&n<f;t++)null!=g[p[t]]&&n++;n=n==f}}else n=0==a.length;n&&d.push(b[m])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();
+b=b.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var d=this.model.getCell(a[e]);null!=d&&b.push(d)}return b};Graph.prototype.getCellsForTags=function(a,b,e,c){var d=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());e=null!=e?e:"tags";for(var f=0,g={},m=0;m<a.length;m++)0<a[m].length&&(g[a[m].toLowerCase()]=!0,f++);for(m=0;m<b.length;m++)if(c&&this.model.getParent(b[m])==this.model.root||this.model.isVertex(b[m])||this.model.isEdge(b[m])){var n=null!=
+b[m].value&&"object"==typeof b[m].value?mxUtils.trim(b[m].value.getAttribute(e)||""):"",p=!1;if(0<n.length){if(n=n.toLowerCase().split(" "),n.length>=a.length){for(var u=p=0;u<n.length&&p<f;u++)null!=g[n[u]]&&p++;p=p==f}}else p=0==a.length;p&&d.push(b[m])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();
try{for(var e=0;e<a.length;e++)this.model.setVisible(a[e],b)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,b,e,c){for(var d=0;d<a.length;d++)this.highlightCell(a[d],b,e,c)};Graph.prototype.highlightCell=function(a,b,e,c){b=null!=b?b:mxConstants.DEFAULT_VALID_COLOR;e=null!=e?e:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),f=new mxCellHighlight(this,b,d,!1);null!=c&&(f.opacity=c);f.highlight(a);window.setTimeout(function(){null!=
f.shape&&(mxUtils.setPrefixedStyle(f.shape.node.style,"transition","all 1200ms ease-in-out"),f.shape.node.style.opacity=0);window.setTimeout(function(){f.destroy()},1200)},e)}};Graph.prototype.addSvgShadow=function(a,b,e){e=null!=e?e:!1;var c=a.ownerDocument,d=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"filter"):c.createElement("filter");d.setAttribute("id",this.shadowId);var f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):c.createElement("feGaussianBlur");
f.setAttribute("in","SourceAlpha");f.setAttribute("stdDeviation",this.svgShadowBlur);f.setAttribute("result","blur");d.appendChild(f);f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feOffset"):c.createElement("feOffset");f.setAttribute("in","blur");f.setAttribute("dx",this.svgShadowSize);f.setAttribute("dy",this.svgShadowSize);f.setAttribute("result","offsetBlur");d.appendChild(f);f=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feFlood"):c.createElement("feFlood");
@@ -3222,28 +3226,28 @@ STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people
"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=
[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.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 G=mxMarker.createMarker;mxMarker.createMarker=
-function(a,b,e,c,d,f,g,m,p,n){if(null!=e&&null==mxMarker.markers[e]){var t=this.getPackageForType(e);null!=t&&mxStencilRegistry.getStencil(t)}return G.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function e(){x.value=Math.max(1,Math.min(m,Math.max(parseInt(x.value),parseInt(k.value))));k.value=Math.max(1,Math.min(m,Math.min(parseInt(x.value),parseInt(k.value))))}function c(b){function e(b,e,f){var g=b.useCssTransforms,m=b.currentTranslate,n=b.currentScale,p=b.view.translate,t=
-b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var l=b.getGraphBounds(),k=0,x=0,v=ia.get(),u=1/b.pageScale,q=A.checked;if(q)var u=parseInt(K.value),z=parseInt(R.value),u=Math.min(v.height*z/(l.height/b.view.scale),v.width*u/(l.width/b.view.scale));else u=parseInt(y.value)/(100*b.pageScale),isNaN(u)&&(c=1/b.pageScale,y.value="100 %");v=mxRectangle.fromRectangle(v);v.width=Math.ceil(v.width*
-c);v.height=Math.ceil(v.height*c);u*=c;!q&&b.pageVisible?(l=b.getPageLayout(),k-=l.x*v.width,x-=l.y*v.height):q=!0;if(null==e){e=PrintDialog.createPrintPreview(b,u,v,0,k,x,q);e.pageSelector=!1;e.mathEnabled=!1;k=a.getCurrentFile();null!=k&&(e.title=k.getTitle());var B=e.writeHead;e.writeHead=function(e){B.apply(this,arguments);mxClient.IS_GC&&(e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),e.writeln("}"),e.writeln("</style>"));
+function(a,b,e,c,d,f,g,m,n,p){if(null!=e&&null==mxMarker.markers[e]){var u=this.getPackageForType(e);null!=u&&mxStencilRegistry.getStencil(u)}return G.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function e(){v.value=Math.max(1,Math.min(m,Math.max(parseInt(v.value),parseInt(k.value))));k.value=Math.max(1,Math.min(m,Math.min(parseInt(v.value),parseInt(k.value))))}function c(b){function e(b,e,f){var g=b.useCssTransforms,m=b.currentTranslate,p=b.currentScale,n=b.view.translate,u=
+b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var l=b.getGraphBounds(),k=0,v=0,t=ia.get(),x=1/b.pageScale,q=A.checked;if(q)var x=parseInt(K.value),z=parseInt(R.value),x=Math.min(t.height*z/(l.height/b.view.scale),t.width*x/(l.width/b.view.scale));else x=parseInt(y.value)/(100*b.pageScale),isNaN(x)&&(c=1/b.pageScale,y.value="100 %");t=mxRectangle.fromRectangle(t);t.width=Math.ceil(t.width*
+c);t.height=Math.ceil(t.height*c);x*=c;!q&&b.pageVisible?(l=b.getPageLayout(),k-=l.x*t.width,v-=l.y*t.height):q=!0;if(null==e){e=PrintDialog.createPrintPreview(b,x,t,0,k,v,q);e.pageSelector=!1;e.mathEnabled=!1;k=a.getCurrentFile();null!=k&&(e.title=k.getTitle());var B=e.writeHead;e.writeHead=function(e){B.apply(this,arguments);mxClient.IS_GC&&(e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),e.writeln("}"),e.writeln("</style>"));
null!=a.editor.fontCss&&(e.writeln('<style type="text/css">'),e.writeln(a.editor.fontCss),e.writeln("</style>"));if(null!=b.extFonts)for(var c=0;c<b.extFonts.length;c++){var d=b.extFonts[c].name,f=b.extFonts[c].url;0==f.indexOf(Editor.GOOGLE_FONTS)?e.writeln('<link rel="stylesheet" href="'+f+'" charset="UTF-8" type="text/css">'):(e.writeln('<style type="text/css">'),e.writeln('@font-face {\n\tfont-family: "'+d+'";\n\tsrc: url("'+f+'");\n}'),e.writeln("</style>"))}};if("undefined"!==typeof MathJax){var E=
-e.renderPage;e.renderPage=function(b,e,c,d,f,g){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject;var n=E.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:n.className="geDisableMathJax";return n}}k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());e.open(null,null,f,!0);null!=k&&(d.stylesheet=k,d.refresh())}else{v=
-b.background;if(null==v||""==v||v==mxConstants.NONE)v="#ffffff";e.backgroundColor=v;e.autoOrigin=q;e.appendGraph(b,u,k,x,f,!0);if(null!=b.extFonts&&null!=e.wnd)for(f=0;f<b.extFonts.length;f++)k=b.extFonts[f].name,x=b.extFonts[f].url,0==x.indexOf(Editor.GOOGLE_FONTS)?e.wnd.document.writeln('<link rel="stylesheet" href="'+x+'" charset="UTF-8" type="text/css">'):(e.wnd.document.writeln('<style type="text/css">'),e.wnd.document.writeln('@font-face {\n\tfont-family: "'+k+'";\n\tsrc: url("'+x+'");\n}'),
-e.wnd.document.writeln("</style>"))}g&&(b.useCssTransforms=g,b.currentTranslate=m,b.currentScale=n,b.view.translate=p,b.view.scale=t);return e}var c=parseInt(ka.value)/100;isNaN(c)&&(c=1,ka.value="100 %");var c=.75*c,f=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(f=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());var g=k.value,m=x.value,n=!t.checked,l=null;n&&(n=g==p&&m==p);if(!n&&null!=a.pages&&a.pages.length){var v=0,n=a.pages.length-1;t.checked||(v=parseInt(g)-1,n=parseInt(m)-
-1);for(var u=v;u<=n;u++){var q=a.pages[u],g=q==a.currentPage?d:null;if(null==g){var g=a.createTemporaryGraph(d.stylesheet),m=!0,v=!1,z=null,B=null;null==q.viewState&&null==q.root&&a.updatePageRoot(q);null!=q.viewState&&(m=q.viewState.pageVisible,v=q.viewState.mathEnabled,z=q.viewState.background,B=q.viewState.backgroundImage,g.extFonts=q.viewState.extFonts);g.background=z;g.backgroundImage=null!=B?new mxImage(B.src,B.width,B.height):null;g.pageVisible=m;g.mathEnabled=v;var E=g.getGlobalVariable;g.getGlobalVariable=
-function(b){return"page"==b?q.getName():"pagenumber"==b?u+1:"pagecount"==b?null!=a.pages?a.pages.length:1:E.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(q);g.model.setRoot(q.root)}l=e(g,l,u!=n);g!=d&&g.container.parentNode.removeChild(g.container)}}else l=e(d);null==l?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(l.mathEnabled&&(n=l.wnd.document,b&&(l.wnd.IMMEDIATE_PRINT=!0),n.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),
-l.closeDocument(),!l.mathEnabled&&b&&PrintDialog.printPreview(l));null!=f&&(d.stylesheet=f,d.refresh())}var d=a.editor.graph,f=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,b||mxResources.get("print"));f.appendChild(g);var m=1,p=1,n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText=
-"margin-right:8px;margin-bottom:8px;";t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("name","pages-printdialog");n.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));n.appendChild(g);mxUtils.br(n);var l=t.cloneNode(!0);t.setAttribute("checked","checked");l.setAttribute("value","range");n.appendChild(l);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");n.appendChild(g);var k=document.createElement("input");
-k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";n.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));n.appendChild(g);var x=k.cloneNode(!0);n.appendChild(x);mxEvent.addListener(k,"focus",function(){l.checked=!0});mxEvent.addListener(x,"focus",function(){l.checked=!0});mxEvent.addListener(k,"change",e);mxEvent.addListener(x,"change",e);if(null!=a.pages&&(m=a.pages.length,
-null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){p=g+1;k.value=p;x.value=p;break}k.setAttribute("max",m);x.setAttribute("max",m);a.isPagesEnabled()?1<m&&(f.appendChild(n),l.checked=!0):l.checked=!0;var v=document.createElement("div");v.style.marginBottom="10px";var u=document.createElement("input");u.style.marginRight="8px";u.setAttribute("value","adjust");u.setAttribute("type","radio");u.setAttribute("name","printZoom");v.appendChild(u);g=document.createElement("span");
-mxUtils.write(g,mxResources.get("adjustTo"));v.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width="50px";v.appendChild(y);mxEvent.addListener(y,"focus",function(){u.checked=!0});f.appendChild(v);var n=n.cloneNode(!1),A=u.cloneNode(!0);A.setAttribute("value","fit");u.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";
-g.appendChild(A);n.appendChild(g);v=document.createElement("table");v.style.display="inline-block";var q=document.createElement("tbody"),z=document.createElement("tr"),E=z.cloneNode(!0),C=document.createElement("td"),D=C.cloneNode(!0),G=C.cloneNode(!0),F=C.cloneNode(!0),J=C.cloneNode(!0),I=C.cloneNode(!0);C.style.textAlign="right";F.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");
+e.renderPage;e.renderPage=function(b,e,c,d,f,g){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject;var p=E.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:p.className="geDisableMathJax";return p}}k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());e.open(null,null,f,!0);null!=k&&(d.stylesheet=k,d.refresh())}else{t=
+b.background;if(null==t||""==t||t==mxConstants.NONE)t="#ffffff";e.backgroundColor=t;e.autoOrigin=q;e.appendGraph(b,x,k,v,f,!0);if(null!=b.extFonts&&null!=e.wnd)for(f=0;f<b.extFonts.length;f++)k=b.extFonts[f].name,v=b.extFonts[f].url,0==v.indexOf(Editor.GOOGLE_FONTS)?e.wnd.document.writeln('<link rel="stylesheet" href="'+v+'" charset="UTF-8" type="text/css">'):(e.wnd.document.writeln('<style type="text/css">'),e.wnd.document.writeln('@font-face {\n\tfont-family: "'+k+'";\n\tsrc: url("'+v+'");\n}'),
+e.wnd.document.writeln("</style>"))}g&&(b.useCssTransforms=g,b.currentTranslate=m,b.currentScale=p,b.view.translate=n,b.view.scale=u);return e}var c=parseInt(ka.value)/100;isNaN(c)&&(c=1,ka.value="100 %");var c=.75*c,f=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(f=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());var g=k.value,m=v.value,p=!u.checked,l=null;p&&(p=g==n&&m==n);if(!p&&null!=a.pages&&a.pages.length){var t=0,p=a.pages.length-1;u.checked||(t=parseInt(g)-1,p=parseInt(m)-
+1);for(var x=t;x<=p;x++){var q=a.pages[x],g=q==a.currentPage?d:null;if(null==g){var g=a.createTemporaryGraph(d.stylesheet),m=!0,t=!1,z=null,B=null;null==q.viewState&&null==q.root&&a.updatePageRoot(q);null!=q.viewState&&(m=q.viewState.pageVisible,t=q.viewState.mathEnabled,z=q.viewState.background,B=q.viewState.backgroundImage,g.extFonts=q.viewState.extFonts);g.background=z;g.backgroundImage=null!=B?new mxImage(B.src,B.width,B.height):null;g.pageVisible=m;g.mathEnabled=t;var E=g.getGlobalVariable;g.getGlobalVariable=
+function(b){return"page"==b?q.getName():"pagenumber"==b?x+1:"pagecount"==b?null!=a.pages?a.pages.length:1:E.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(q);g.model.setRoot(q.root)}l=e(g,l,x!=p);g!=d&&g.container.parentNode.removeChild(g.container)}}else l=e(d);null==l?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(l.mathEnabled&&(p=l.wnd.document,b&&(l.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),
+l.closeDocument(),!l.mathEnabled&&b&&PrintDialog.printPreview(l));null!=f&&(d.stylesheet=f,d.refresh())}var d=a.editor.graph,f=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,b||mxResources.get("print"));f.appendChild(g);var m=1,n=1,p=document.createElement("div");p.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");p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));p.appendChild(g);mxUtils.br(p);var l=u.cloneNode(!0);u.setAttribute("checked","checked");l.setAttribute("value","range");p.appendChild(l);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");p.appendChild(g);var k=document.createElement("input");
+k.style.cssText="margin:0 8px 0 8px;";k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";p.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var v=k.cloneNode(!0);p.appendChild(v);mxEvent.addListener(k,"focus",function(){l.checked=!0});mxEvent.addListener(v,"focus",function(){l.checked=!0});mxEvent.addListener(k,"change",e);mxEvent.addListener(v,"change",e);if(null!=a.pages&&(m=a.pages.length,
+null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;k.value=n;v.value=n;break}k.setAttribute("max",m);v.setAttribute("max",m);a.isPagesEnabled()?1<m&&(f.appendChild(p),l.checked=!0):l.checked=!0;var t=document.createElement("div");t.style.marginBottom="10px";var x=document.createElement("input");x.style.marginRight="8px";x.setAttribute("value","adjust");x.setAttribute("type","radio");x.setAttribute("name","printZoom");t.appendChild(x);g=document.createElement("span");
+mxUtils.write(g,mxResources.get("adjustTo"));t.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width="50px";t.appendChild(y);mxEvent.addListener(y,"focus",function(){x.checked=!0});f.appendChild(t);var p=p.cloneNode(!1),A=x.cloneNode(!0);A.setAttribute("value","fit");x.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";
+g.appendChild(A);p.appendChild(g);t=document.createElement("table");t.style.display="inline-block";var q=document.createElement("tbody"),z=document.createElement("tr"),E=z.cloneNode(!0),C=document.createElement("td"),D=C.cloneNode(!0),G=C.cloneNode(!0),F=C.cloneNode(!0),J=C.cloneNode(!0),I=C.cloneNode(!0);C.style.textAlign="right";F.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","1");
K.setAttribute("min","1");K.setAttribute("type","number");K.style.width="40px";D.appendChild(K);g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsAcross"));G.appendChild(g);mxUtils.write(F,mxResources.get("fitToBy"));var R=K.cloneNode(!0);J.appendChild(R);mxEvent.addListener(K,"focus",function(){A.checked=!0});mxEvent.addListener(R,"focus",function(){A.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));I.appendChild(g);z.appendChild(C);
-z.appendChild(D);z.appendChild(G);E.appendChild(F);E.appendChild(J);E.appendChild(I);q.appendChild(z);q.appendChild(E);v.appendChild(q);n.appendChild(v);f.appendChild(n);n=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));n.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ia=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);
-n.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));n.appendChild(g);var ka=document.createElement("input");ka.style.cssText="margin:0 8px 0 8px;";ka.setAttribute("value","100 %");ka.style.width="60px";n.appendChild(ka);f.appendChild(n);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&g.appendChild(n);a.isOffline()||
-(v=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),v.className="geBtn",g.appendChild(v));PrintDialog.previewEnabled&&(v=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),v.className="geBtn",g.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});v.className="geBtn gePrimaryBtn";g.appendChild(v);a.editor.cancelFirst||g.appendChild(n);
+z.appendChild(D);z.appendChild(G);E.appendChild(F);E.appendChild(J);E.appendChild(I);q.appendChild(z);q.appendChild(E);t.appendChild(q);p.appendChild(t);f.appendChild(p);p=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));p.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ia=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);
+p.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));p.appendChild(g);var ka=document.createElement("input");ka.style.cssText="margin:0 8px 0 8px;";ka.setAttribute("value","100 %");ka.style.width="60px";p.appendChild(ka);f.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||
+(t=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),t.className="geBtn",g.appendChild(t));PrintDialog.previewEnabled&&(t=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),t.className="geBtn",g.appendChild(t));t=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});t.className="geBtn gePrimaryBtn";g.appendChild(t);a.editor.cancelFirst||g.appendChild(p);
f.appendChild(g);this.container=f};var F=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)):(F.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))};Editor.prototype.useCanvasForExport=!1;try{var I=document.createElement("canvas"),
-J=new Image;J.onload=function(){try{I.getContext("2d").drawImage(J,0,0);var a=I.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(K){}};J.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
+J=new Image;J.onload=function(){try{I.getContext("2d").drawImage(J,0,0);var a=I.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(K){}};J.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}})();
(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars=
"\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&
!EditorUi.isElectronApp&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,
@@ -3266,11 +3270,11 @@ EditorUi.prototype.isPngData=function(a){return 8<a.length&&137==a.charCodeAt(0)
">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var f=mxUtils.parseXml(b),n=this.editor.extractGraphModel(f.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),e=null!=n?mxUtils.getXml(n):""}catch(v){}return e};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=Graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var n=this.updatePageRoot(new DiagramPage(d[f]));
null==n.getName()&&n.setName(mxResources.get("pageWithNumber",[f+1]));b.model.execute(new ChangePage(this,n,0==f?n:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
-this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)b.model.execute(new ChangePage(this,c[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,e,c,d,f,n,l,t,k,y,q){e=null!=e?e:this.editor.graph;f=null!=f?f:!1;k=null!=k?k:!0;var b,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?b="_blank":g=b=d;if(null==a)return"";var m=a;if("mxfile"!=m.nodeName.toLowerCase()){if(q){var p=a.ownerDocument.createElement("diagram");p.setAttribute("id",
+this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)b.model.execute(new ChangePage(this,c[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,e,c,d,f,n,l,u,k,y,q){e=null!=e?e:this.editor.graph;f=null!=f?f:!1;k=null!=k?k:!0;var b,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?b="_blank":g=b=d;if(null==a)return"";var m=a;if("mxfile"!=m.nodeName.toLowerCase()){if(q){var p=a.ownerDocument.createElement("diagram");p.setAttribute("id",
Editor.guid());p.appendChild(a)}else{p=Graph.zapGremlins(mxUtils.getXml(a));m=Graph.compress(p);if(Graph.decompress(m)!=p)return p;p=a.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,m)}m=a.ownerDocument.createElement("mxfile");m.appendChild(p)}y?(m=m.cloneNode(!0),m.removeAttribute("modified"),m.removeAttribute("host"),m.removeAttribute("agent"),m.removeAttribute("etag"),m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),
m.removeAttribute("type")):(m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("pages"),m.removeAttribute("type"),mxClient.IS_CHROMEAPP?m.setAttribute("host","Chrome"):EditorUi.isElectronApp?m.setAttribute("host","Electron"):m.setAttribute("host",window.location.hostname),m.setAttribute("modified",(new Date).toISOString()),m.setAttribute("agent",navigator.appVersion),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),
a=null!=c?c.getMode():this.mode,null!=a&&m.setAttribute("type",a),1<m.getElementsByTagName("diagram").length&&null!=this.pages&&m.setAttribute("pages",this.pages.length));q=q?mxUtils.getPrettyXml(m):mxUtils.getXml(m);if(!n&&!f&&(l||null!=c&&/(\.html)$/i.test(c.getTitle())))q=this.getHtml2(mxUtils.getXml(m),e,null!=c?c.getTitle():null,b,g);else if(n||!f&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),q=this.getEmbeddedSvg(q,e,
-d,null,t,k,g);return q};EditorUi.prototype.getXmlFileData=function(a,e,c){a=null!=a?a:!0;e=null!=e?e:!1;c=null!=c?c:!Editor.compressXml;var b=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var e=a.getElementsByTagName("mxGraphModel"),e=0<e.length?e[0]:null;null==e&&c?(e=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<e.length&&(e=Graph.decompress(e),null!=e&&0<e.length&&a.appendChild(mxUtils.parseXml(e).documentElement))):null==e||c?a=a.cloneNode(!0):
+d,null,u,k,g);return q};EditorUi.prototype.getXmlFileData=function(a,e,c){a=null!=a?a:!0;e=null!=e?e:!1;c=null!=c?c:!Editor.compressXml;var b=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var e=a.getElementsByTagName("mxGraphModel"),e=0<e.length?e[0]:null;null==e&&c?(e=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<e.length&&(e=Graph.decompress(e),null!=e&&0<e.length&&a.appendChild(mxUtils.parseXml(e).documentElement))):null==e||c?a=a.cloneNode(!0):
(a=a.cloneNode(!1),mxUtils.setTextContent(a,Graph.compressNode(e)));b.appendChild(a)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(b)),b=this.fileNode.cloneNode(!1),e)a(this.currentPage.node);else for(e=0;e<this.pages.length;e++){if(this.currentPage!=this.pages[e]&&this.pages[e].needsUpdate){var d=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[e].root));this.editor.graph.saveViewState(this.pages[e].viewState,
d);EditorUi.removeChildNodes(this.pages[e].node);mxUtils.setTextContent(this.pages[e].node,Graph.compressNode(d));delete this.pages[e].needsUpdate}a(this.pages[e].node)}return b};EditorUi.prototype.anonymizeString=function(a,e){for(var b=[],c=0;c<a.length;c++){var d=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)?b.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?b.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?b.push(String.fromCharCode(97+Math.round(25*Math.random()))):
/\s/.test(d)?b.push(" "):b.push("?"):b.push(e?"0":Math.round(9*Math.random()))}return b.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var c=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));a[EditorUi.DIFF_INSERT][b].data=mxUtils.getXml(c)}catch(n){a[EditorUi.DIFF_INSERT][b].data=
@@ -3278,8 +3282,8 @@ n.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var d in a[EditorUi.DIFF_UPDATE]
delete f.cells[a]}}),b(EditorUi.DIFF_INSERT),b(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete a[EditorUi.DIFF_UPDATE][d]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,e){if(null!=a.attributes)for(var b=0;b<a.attributes.length;b++)"as"!=a.attributes[b].name&&a.setAttribute(a.attributes[b].name,this.anonymizeString(a.attributes[b].value,e));if(null!=a.childNodes)for(b=
0;b<a.childNodes.length;b++)this.anonymizeAttributes(a.childNodes[b],e)};EditorUi.prototype.anonymizeNode=function(a,e){for(var b=a.getElementsByTagName("mxCell"),c=0;c<b.length;c++)null!=b[c].getAttribute("value")&&b[c].setAttribute("value","["+b[c].getAttribute("value").length+"]"),null!=b[c].getAttribute("xmlValue")&&b[c].setAttribute("xmlValue","["+b[c].getAttribute("xmlValue").length+"]"),null!=b[c].getAttribute("style")&&b[c].setAttribute("style","["+b[c].getAttribute("style").length+"]"),null!=
b[c].parentNode&&"root"!=b[c].parentNode.nodeName&&null!=b[c].parentNode.parentNode&&(b[c].setAttribute("id",b[c].parentNode.getAttribute("id")),b[c].parentNode.parentNode.replaceChild(b[c],b[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(),
-this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,e,c,d,f,n,l,t,k,y){f=null!=f?f:!0;n=null!=n?n:!1;var b=this.editor.graph;if(e||!a&&null!=k&&/(\.svg)$/i.test(k.getTitle()))if(y=
-!1,null!=this.pages&&this.currentPage!=this.pages[0]){var g=b.getGlobalVariable,b=this.createTemporaryGraph(b.getStylesheet()),m=this.pages[0];b.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(b.container);b.model.setRoot(m.root)}l=null!=l?l:this.getXmlFileData(f,n,y);k=null!=k?k:this.getCurrentFile();a=this.createFileData(l,b,k,window.location.href,a,e,c,d,f,t,y);b!=this.editor.graph&&b.container.parentNode.removeChild(b.container);
+this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,e,c,d,f,n,l,u,k,y){f=null!=f?f:!0;n=null!=n?n:!1;var b=this.editor.graph;if(e||!a&&null!=k&&/(\.svg)$/i.test(k.getTitle()))if(y=
+!1,null!=this.pages&&this.currentPage!=this.pages[0]){var g=b.getGlobalVariable,b=this.createTemporaryGraph(b.getStylesheet()),m=this.pages[0];b.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?1:g.apply(this,arguments)};document.body.appendChild(b.container);b.model.setRoot(m.root)}l=null!=l?l:this.getXmlFileData(f,n,y);k=null!=k?k:this.getCurrentFile();a=this.createFileData(l,b,k,window.location.href,a,e,c,d,f,u,y);b!=this.editor.graph&&b.container.parentNode.removeChild(b.container);
return a};EditorUi.prototype.getHtml=function(a,e,c,d,f,n){n=null!=n?n:!0;var b=null,g=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=e){var b=n?e.getGraphBounds():e.getBoundingBox(e.getSelectionCells()),m=e.view.scale;n=Math.floor(b.x/m-e.view.translate.x);m=Math.floor(b.y/m-e.view.translate.y);b=e.background;null==f&&(e=this.getBasenames().join(";"),0<e.length&&(g=EditorUi.drawHost+"/embed.js?s="+e));a.setAttribute("x0",n);a.setAttribute("y0",m)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
"1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",d));null!=f&&(f=f.replace(/&/g,"&amp;"));a=null!=a?Graph.zapGremlins(mxUtils.getXml(a)):"";d=Graph.compress(a);Graph.decompress(d)!=a&&(d=encodeURIComponent(a));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+
(null==f?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=b&&b!=mxConstants.NONE?' style="background-color:'+b+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+d+"</div>\n</div>\n"+(null==f?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
@@ -3288,28 +3292,28 @@ return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,
mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==f?'<script type="text/javascript" src="'+e+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:
null;var b=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(b)throw Error(mxResources.get("notADiagramFile")+" ("+b+")");b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){var c=null;this.fileNode=a;this.pages=[];for(var d=0;d<b.length;d++)null==b[d].getAttribute("id")&&b[d].setAttribute("id",d),a=new DiagramPage(b[d]),
null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==urlParams["page-id"]&&(c=a);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
-[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var n=this.editor.graph.getModel(),l=n.getChildren(n.root),d=0;d<l.length;d++){var t=l[d];n.setVisible(t,a[t.id]||!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():
-this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,e,c,d,f,n,l,t,k,y,q){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var b=this.getBaseFilename(!f),
+[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var n=this.editor.graph.getModel(),l=n.getChildren(n.root),d=0;d<l.length;d++){var u=l[d];n.setVisible(u,a[u.id]||!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():
+this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,e,c,d,f,n,l,u,k,y,q){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var b=this.getBaseFilename(!f),
g=b+"."+a;if("xml"==a){var m='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,d,f,null,null,null,e);this.saveData(g,a,m,"text/xml")}else if("html"==a)m=this.getHtml2(this.getFileData(!0),this.editor.graph,b),this.saveData(g,a,m,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g=b+".png":"jpeg"==a&&(g=b+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(b,e){try{var c=this.editor.graph.pageVisible;
-null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(b,a,d,e,l,f,t,k,y,q);this.editor.graph.pageVisible=c;return g}catch(L){this.handleError(L)}}));else{var p=null,x=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var v=this.editor.graph.background;if(l||v==mxConstants.NONE)v=
-null;var E=this.editor.graph.getSvg(v,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(E);this.editor.convertImages(E,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();x('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=b+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();x(a)}),d)}}catch(J){this.handleError(J)}};EditorUi.prototype.createDownloadRequest=
-function(a,e,c,d,f,n,l,t,k,y){var b=this.editor.graph,g=b.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==n?!1:"xmlpng"!=e);var m="",p="";if(g.width*g.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?"1":"0";"pdf"==e&&0==n&&(p="&allPages=1");if("xmlpng"==e&&(y="1",e="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){m="&from="+n;break}n=b.background;"png"!=e&&"pdf"!=e||!f?f||
-null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;f={globalVars:b.getExportVariables()};k&&(f.grid={size:b.gridSize,steps:b.view.gridSteps,color:b.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+e+m+p+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+d+"&embedXml="+y+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(f))+(null!=l?"&scale="+l:"")+(null!=t?"&border="+t:""))};EditorUi.prototype.setMode=function(a,
+null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(b,a,d,e,l,f,u,k,y,q);this.editor.graph.pageVisible=c;return g}catch(L){this.handleError(L)}}));else{var p=null,v=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var x=this.editor.graph.background;if(l||x==mxConstants.NONE)x=
+null;var E=this.editor.graph.getSvg(x,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(E);this.editor.convertImages(E,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();v('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else g=b+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();v(a)}),d)}}catch(J){this.handleError(J)}};EditorUi.prototype.createDownloadRequest=
+function(a,e,c,d,f,n,l,u,k,y){var b=this.editor.graph,g=b.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==n?!1:"xmlpng"!=e);var m="",p="";if(g.width*g.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};y=y?"1":"0";"pdf"==e&&0==n&&(p="&allPages=1");if("xmlpng"==e&&(y="1",e="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){m="&from="+n;break}n=b.background;"png"!=e&&"pdf"!=e||!f?f||
+null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;f={globalVars:b.getExportVariables()};k&&(f.grid={size:b.gridSize,steps:b.view.gridSteps,color:b.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+e+m+p+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+d+"&embedXml="+y+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(f))+(null!=l?"&scale="+l:"")+(null!=u?"&border="+u:""))};EditorUi.prototype.setMode=function(a,
e){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,e,c){var b=window.location.hash,d=mxUtils.bind(this,function(c){var d=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<d.length&&(d+="\n"),d+=c);c=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return b};this.fileLoaded(c);"csv"==a.format&&this.importCsv(d,mxUtils.bind(this,function(a){this.editor.undoManager.clear();
this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var f=null!=a.interval?parseInt(a.interval):6E4,g=null,m=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),
n=mxUtils.bind(this,function(){window.clearTimeout(g);g=window.setTimeout(m,f)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();m()}));n();m()}null!=e&&e()});if(null!=a.url&&0<a.url.length){var f=a.url;/^https?:\/\//.test(f)&&!this.editor.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));this.editor.loadUrl(f,mxUtils.bind(this,function(a){d(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else d("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=
-new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,e){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,n=f.getModel();n.beginUpdate();var l=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var t=n.getCell(a.getAttribute("id"));if(null!=t){try{var k=a.getAttribute("value");if(null!=k){var y=
-mxUtils.parseXml(k).documentElement;if(null!=y)if("1"==y.getAttribute("replace-value"))n.setValue(t,y);else for(var q=y.attributes,z=0;z<q.length;z++)f.setAttributeForCell(t,q[z].nodeName,0<q[z].nodeValue.length?q[z].nodeValue:null)}}catch(u){null!=window.console&&console.log("Error in value for "+t.id+": "+u)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(t,C)}catch(u){null!=window.console&&console.log("Error in style for "+t.id+": "+u)}try{var A=a.getAttribute("icon");if(null!=A){var D=
-0<A.length?JSON.parse(A):null;null!=D&&D.append||f.removeCellOverlays(t);null!=D&&f.addCellOverlay(t,b(D))}}catch(u){null!=window.console&&console.log("Error in icon for "+t.id+": "+u)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),F=f.getCellGeometry(t);if(null!=F){F=F.clone();for(key in G){var I=parseFloat(G[key]);"dx"==key?F.x+=I:"dy"==key?F.y+=I:"dw"==key?F.width+=I:"dh"==key?F.height+=I:F[key]=parseFloat(G[key])}f.model.setGeometry(t,F)}}}catch(u){null!=window.console&&
-console.log("Error in icon for "+t.id+": "+u)}}}else if("model"==a.nodeName){for(var J=a.firstChild;null!=J&&J.nodeType!=mxConstants.NODETYPE_ELEMENT;)J=J.nextSibling;null!=J&&(new mxCodec(a.firstChild)).decode(J,n)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(l=a.hasAttribute("max-scale")?
-parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{n.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return c};EditorUi.prototype.getCopyFilename=function(a,e){var b=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",d=b.lastIndexOf(".");0<=d&&(c=b.substring(d),b=b.substring(0,d));if(e)var f=new Date,d=f.getFullYear(),l=f.getMonth()+1,t=f.getDate(),k=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),b=b+(" "+(d+"-"+l+"-"+t+"-"+k+"-"+y+"-"+f));
+new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,e){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,n=f.getModel();n.beginUpdate();var l=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var u=n.getCell(a.getAttribute("id"));if(null!=u){try{var k=a.getAttribute("value");if(null!=k){var y=
+mxUtils.parseXml(k).documentElement;if(null!=y)if("1"==y.getAttribute("replace-value"))n.setValue(u,y);else for(var q=y.attributes,z=0;z<q.length;z++)f.setAttributeForCell(u,q[z].nodeName,0<q[z].nodeValue.length?q[z].nodeValue:null)}}catch(t){null!=window.console&&console.log("Error in value for "+u.id+": "+t)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(u,C)}catch(t){null!=window.console&&console.log("Error in style for "+u.id+": "+t)}try{var A=a.getAttribute("icon");if(null!=A){var D=
+0<A.length?JSON.parse(A):null;null!=D&&D.append||f.removeCellOverlays(u);null!=D&&f.addCellOverlay(u,b(D))}}catch(t){null!=window.console&&console.log("Error in icon for "+u.id+": "+t)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),F=f.getCellGeometry(u);if(null!=F){F=F.clone();for(key in G){var I=parseFloat(G[key]);"dx"==key?F.x+=I:"dy"==key?F.y+=I:"dw"==key?F.width+=I:"dh"==key?F.height+=I:F[key]=parseFloat(G[key])}f.model.setGeometry(u,F)}}}catch(t){null!=window.console&&
+console.log("Error in icon for "+u.id+": "+t)}}}else if("model"==a.nodeName){for(var J=a.firstChild;null!=J&&J.nodeType!=mxConstants.NODETYPE_ELEMENT;)J=J.nextSibling;null!=J&&(new mxCodec(a.firstChild)).decode(J,n)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(l=a.hasAttribute("max-scale")?
+parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{n.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return c};EditorUi.prototype.getCopyFilename=function(a,e){var b=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",d=b.lastIndexOf(".");0<=d&&(c=b.substring(d),b=b.substring(0,d));if(e)var f=new Date,d=f.getFullYear(),l=f.getMonth()+1,u=f.getDate(),k=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),b=b+(" "+(d+"-"+l+"-"+u+"-"+k+"-"+y+"-"+f));
return b=mxResources.get("copyOf",[b])+c};EditorUi.prototype.fileLoaded=function(a,e){var b=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var c=!1;this.hideDialog();null!=b&&(EditorUi.debug("File.closed",[b]),b.removeListener(this.descriptorChangedListener),b.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=b&&this.updateDocumentTitle();this.editor.graph.model.clear();
this.editor.undoManager.clear();this.setBackgroundImage(null);!e&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();e||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",
this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+
mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));c=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:a.getMode().toUpperCase()+"-OPEN-FILE-"+
a.getHash(),action:"size_"+a.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")});EditorUi.debug("File.opened",[a]);if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(v){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(v){}}catch(v){this.fileLoadedError=v;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+
-(null!=a?a.getHash():"none"),action:"message_"+v.message,label:"stack_"+v.stack})}catch(t){}var f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):d()});e?f():this.handleError(v,mxResources.get("errorLoadingFile"),f,!0,null,null,!0)}else d();return c};EditorUi.prototype.getHashValueForPages=function(a,e){var b=0,c=new mxGraphModel,d=new mxCodec;null!=e&&(e.byteCount=
-0,e.attrCount=0,e.eltCount=0,e.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var l=a[f].node.cloneNode(!1);l.removeAttribute("name");c.root=a[f].root;var t=d.encode(c);this.editor.graph.saveViewState(a[f].viewState,t,!0);t.removeAttribute("pageWidth");t.removeAttribute("pageHeight");l.appendChild(t);null!=e&&(e.eltCount+=l.getElementsByTagName("*").length,e.nodeCount+=l.getElementsByTagName("mxCell").length);b=(b<<5)-b+this.hashValue(l,function(a,b,e,c){return!c||"mxGeometry"!=
+(null!=a?a.getHash():"none"),action:"message_"+v.message,label:"stack_"+v.stack})}catch(u){}var f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=b?this.fileLoaded(b):d()});e?f():this.handleError(v,mxResources.get("errorLoadingFile"),f,!0,null,null,!0)}else d();return c};EditorUi.prototype.getHashValueForPages=function(a,e){var b=0,c=new mxGraphModel,d=new mxCodec;null!=e&&(e.byteCount=
+0,e.attrCount=0,e.eltCount=0,e.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var l=a[f].node.cloneNode(!1);l.removeAttribute("name");c.root=a[f].root;var u=d.encode(c);this.editor.graph.saveViewState(a[f].viewState,u,!0);u.removeAttribute("pageWidth");u.removeAttribute("pageHeight");l.appendChild(u);null!=e&&(e.eltCount+=l.getElementsByTagName("*").length,e.nodeCount+=l.getElementsByTagName("mxCell").length);b=(b<<5)-b+this.hashValue(l,function(a,b,e,c){return!c||"mxGeometry"!=
a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?c&&"mxCell"==a.nodeName&&"previous"==b?null:e:Math.round(e)},e)<<0}return b};EditorUi.prototype.hashValue=function(a,e,c){var b=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(b^=this.hashValue(a.nodeName,e,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var d=0;d<a.attributes.length;d++){var f=a.attributes[d].name,
g=null!=e?e(a,f,a.attributes[d].value,!0):a.attributes[d].value;null!=g&&(b^=this.hashValue(f,e,c)+this.hashValue(g,e,c))}}if(null!=a.childNodes)for(d=0;d<a.childNodes.length;d++)b=(b<<5)-b+this.hashValue(a.childNodes[d],e,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);e=0;null!=c&&(c.byteCount+=a.length);for(d=0;d<a.length;d++)e=(e<<5)-e+a.charCodeAt(d)<<0;b^=e}return b};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=
function(a,e,c,d,f,n,l){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(),
@@ -3325,11 +3329,11 @@ c,a,a.getMode(),!0,!0,function(){null!=A&&null!=A.parentNode&&(A.parentNode.remo
(a.title=f);c.push(a);G(d);null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null)}),I=mxUtils.bind(this,function(a){if(C.isSelectionEmpty())C.getRubberband().isActive()?(C.getRubberband().execute(a),C.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=C.getSelectionCells(),c=C.view.getBounds(b),e=C.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=C.view.translate.x;c.y-=C.view.translate.y;
F(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(p,function(){},mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler.first&&(C.graphHandler.suspend(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility="hidden"),p.style.backgroundColor="#f1f3f4",p.style.cursor="copy",C.panningManager.stop(),C.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler&&(p.style.backgroundColor=
"",p.style.cursor="default",this.sidebar.showTooltips=!0,C.panningManager.stop(),C.graphHandler.reset(),C.isMouseDown=!1,C.autoScroll=!0,I(a),mxEvent.consume(a))}));mxEvent.addListener(p,"mouseleave",mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.graphHandler.first&&(C.graphHandler.resume(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility="visible"),p.style.backgroundColor="",p.style.cursor="",C.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(p,"dragover",mxUtils.bind(this,
-function(a){p.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";p.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"drop",mxUtils.bind(this,function(a){p.style.cursor="";p.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(b,d,f,m,n,l,t,k,x){if(null!=b&&"image/"==d.substring(0,6))b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+
-this.convertDataUri(b),b=[new mxCell("",new mxGeometry(0,0,n,l),b)],b[0].vertex=!0,F(b,new mxRectangle(0,0,n,l),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null);else{var u=!1,v=mxUtils.bind(this,function(b,d){if(null!=b&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(b);null!=f&&0<f.length&&(b=f)}if(null!=b)if(f=mxUtils.parseXml(b),"mxlibrary"==f.documentElement.nodeName)try{var m=
-JSON.parse(mxUtils.getTextContent(f.documentElement));g(m,p);c=c.concat(m);G(a);this.spinner.stop();u=!0}catch(M){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"),m=0;m<n.length;m++){var l=this.stringToCells(Editor.getDiagramNodeXml(n[m])),t=this.editor.graph.getBoundingBoxFromGeometry(l);F(l,new mxRectangle(0,0,t.width,t.height),a)}u=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));
-null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null)});null!=x&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(x,function(a){v(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,t)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?v(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?
-"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(b,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"dragleave",function(a){p.style.cursor="";p.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));k.insertBefore(q,k.firstChild);mxEvent.addListener(q,"click",D);mxEvent.addListener(p,"dblclick",function(a){mxEvent.getSource(a)==
+function(a){p.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";p.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"drop",mxUtils.bind(this,function(a){p.style.cursor="";p.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(b,d,f,m,n,l,u,k,v){if(null!=b&&"image/"==d.substring(0,6))b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+
+this.convertDataUri(b),b=[new mxCell("",new mxGeometry(0,0,n,l),b)],b[0].vertex=!0,F(b,new mxRectangle(0,0,n,l),a,mxEvent.isAltDown(a)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null);else{var t=!1,x=mxUtils.bind(this,function(b,d){if(null!=b&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(b);null!=f&&0<f.length&&(b=f)}if(null!=b)if(f=mxUtils.parseXml(b),"mxlibrary"==f.documentElement.nodeName)try{var m=
+JSON.parse(mxUtils.getTextContent(f.documentElement));g(m,p);c=c.concat(m);G(a);this.spinner.stop();t=!0}catch(M){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"),m=0;m<n.length;m++){var l=this.stringToCells(Editor.getDiagramNodeXml(n[m])),u=this.editor.graph.getBoundingBoxFromGeometry(l);F(l,new mxRectangle(0,0,u.width,u.height),a)}t=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}t||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));
+null!=e&&null!=e.parentNode&&0<c.length&&(e.parentNode.removeChild(e),e=null)});null!=v&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(v,function(a){x(a,"text/xml")},null,u):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,u)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?
+"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(b,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"dragleave",function(a){p.style.cursor="";p.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));k.insertBefore(q,k.firstChild);mxEvent.addListener(q,"click",D);mxEvent.addListener(p,"dblclick",function(a){mxEvent.getSource(a)==
p&&D(a)});f=q.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));k.insertBefore(f,k.firstChild);mxEvent.addListener(f,"click",I);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);
mxEvent.consume(a)})),k.insertBefore(f,k.firstChild))}l.appendChild(k);l.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,c){for(var b=0;b<a.length;b++){var e=a[b],d=e.data;if(null!=d){var d=this.convertDataUri(d),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(f+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(f+"image="+d,e.w,e.h,"",e.title||"",!1,!1,!0))}else null!=e.xml&&(d=this.stringToCells(Graph.decompress(e.xml)),
0<d.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(d,e.w,e.h,e.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?
@@ -3345,8 +3349,8 @@ if(null!=k&&("#G"==k.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid
k);this.handleError(a,c,d,f,m)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){d.innerHTML="";for(var a=0;a<b.length;a++){var c=document.createElement("option");mxUtils.write(c,b[a].displayName);c.value=a;d.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+b[a].email+">");c.setAttribute("disabled","disabled");d.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=b.length;
d.appendChild(c)}var b=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var d=document.createElement("select");d.style.width="200px";a();mxEvent.addListener(d,"change",mxUtils.bind(this,function(){var c=d.value,e=b.length!=c;e&&this.drive.setUser(b[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(b=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),
!0)}));c.appendChild(d);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=e.message?l=mxUtils.htmlEntities(e.message):null!=e.response&&null!=e.response.error?l=mxUtils.htmlEntities(e.response.error):"undefined"!==typeof window.App&&(e.code==App.ERROR_TIMEOUT?l=mxUtils.htmlEntities(mxResources.get("timeout")):
-e.code==App.ERROR_BUSY&&(l=mxUtils.htmlEntities(mxResources.get("busy"))))}var v=n=null;null!=e&&null!=e.helpLink&&(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(e.helpLink)}));this.showError(c,l,g,d,p,null,null,n,v,null,null,null,f?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(a,c){var b=new ErrorDialog(this,null,a,mxResources.get("ok"),c);this.showDialog(b.container,340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(a,c,d,f,m,
-n){var b=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){b();null!=c&&c()},function(){b();null!=d&&d()},f,m,null,null,null,null,e);this.showDialog(a.container,340,46+e,!0,n);a.init()};EditorUi.prototype.showBanner=function(a,c,d){var b=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var e=document.createElement("div");
+e.code==App.ERROR_BUSY&&(l=mxUtils.htmlEntities(mxResources.get("busy"))))}var v=n=null;null!=e&&null!=e.helpLink&&(n=mxResources.get("help"),v=mxUtils.bind(this,function(){return this.editor.graph.openLink(e.helpLink)}));this.showError(c,l,g,d,p,null,null,n,v,null,null,null,f?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(a,c,d){a=new ErrorDialog(this,null,a,mxResources.get("ok"),c);this.showDialog(a.container,d||340,100,!0,!1);a.init()};EditorUi.prototype.confirm=function(a,c,d,f,
+m,n){var b=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){b();null!=c&&c()},function(){b();null!=d&&d()},f,m,null,null,null,null,e);this.showDialog(a.container,340,46+e,!0,n);a.init()};EditorUi.prototype.showBanner=function(a,c,d){var b=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var e=document.createElement("div");
e.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(e.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(e.style,"transition","all 1s ease");e.className="geBtn gePrimaryBtn";b=document.createElement("img");b.setAttribute("src",IMAGE_PATH+
"/logo.png");b.setAttribute("border","0");b.setAttribute("align","absmiddle");b.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";e.appendChild(b);b=document.createElement("img");b.setAttribute("src",Dialog.prototype.closeImage);b.setAttribute("title",mxResources.get("close"));b.setAttribute("border","0");b.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";e.appendChild(b);mxUtils.write(e,c);document.body.appendChild(e);
this.bannerShowing=!0;var f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var g=document.createElement("input");g.setAttribute("type","checkbox");g.setAttribute("id","geDoNotShowAgainCheckbox");g.style.marginRight="6px";f.appendChild(g);c=document.createElement("label");c.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(c,mxResources.get("doNotShowAgain"));f.appendChild(c);e.style.paddingBottom="30px";e.appendChild(f);var l=mxUtils.bind(this,
@@ -3354,13 +3358,13 @@ function(){null!=e.parentNode&&(e.parentNode.removeChild(e),this.bannerShowing=!
mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);b!=g&&b!=c?(d(),l(),mxEvent.consume(a)):k()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(e.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(k,3E4);b=!0}return b};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};
EditorUi.prototype.createImageDataUri=function(a,c,d,f){var b=a.toDataURL("image/"+d);if(6>=b.length||b==a.cloneNode(!1).toDataURL("image/"+d))throw{message:"Invalid image"};null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c)));0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));return b};EditorUi.prototype.saveCanvas=function(a,c,d,f,m){var b="jpeg"==d?"jpg":d;f=this.getBaseFilename(f)+"."+b;a=this.createImageDataUri(a,c,d,m);this.saveData(f,b,a.substring(a.lastIndexOf(",")+
1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,c){var b=new TextareaDialog(this,a,c,null,null,mxResources.get("close"));b.textarea.style.width="600px";b.textarea.style.height="380px";this.showDialog(b.container,
-620,460,!0,!0,null,null,null,null,!0);b.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,c,d,f,m){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||(c+=".drawio");if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",
-!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",a):this.openInNewWindow(a,d,f);else{var b=document.createElement("a"),e=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof b.download;if(mxClient.IS_GC&&null!=navigator.userAgent)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),e=65==(g?parseInt(g[2],10):!1)?!1:e;if(e||this.isOffline()){b.href=URL.createObjectURL(f?
-this.base64ToBlob(a,d):new Blob([a],{type:d}));e?b.download=c:b.setAttribute("target","_blank");document.body.appendChild(b);try{window.setTimeout(function(){URL.revokeObjectURL(b.href)},2E4),b.click(),b.parentNode.removeChild(b)}catch(x){}}else this.createEchoRequest(a,c,d,f,m).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,c,d,f,m,n){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=m?"&format="+m:"")+(null!=n?"&base64="+
-n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,c){c=c||"";for(var b=atob(a),e=b.length,d=Math.ceil(e/1024),f=Array(d),l=0;l<d;++l){for(var t=1024*l,k=Math.min(t+1024,e),y=Array(k-t),q=0;t<k;++q,++t)y[q]=b[t].charCodeAt(0);f[l]=new Uint8Array(y)}return new Blob(f,{type:c})};EditorUi.prototype.saveLocalFile=function(a,c,d,f,m,n,l){n=null!=n?n:!1;l=null!=l?l:"vsdx"!=m&&(!mxClient.IS_IOS||!navigator.standalone);m=this.getServiceCount(n);
-isLocalStorage&&m++;var b=4>=m?2:6<m?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(b,c){try{if("_blank"==c)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(a,d,f);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(a,b,d,f):null!=b&&0<b.length&&this.pickFolder(c,mxUtils.bind(this,function(e){try{this.exportFile(a,b,d,f,c,
-e)}catch(C){this.handleError(C)}}))}catch(z){this.handleError(z)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,l,null,1<m,b,a,d,f);n=this.isServices(m)?m>b?390:270:160;this.showDialog(c.container,400,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(a,c,d){var b=window.open("about:blank");null==b||null==b.document?mxUtils.popup(a,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?b.document.write("<html>"+a+"</html>"):
-(a=d?a:btoa(unescape(encodeURIComponent(a))),b.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+a+'"/></html>')):b.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),b.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,
+620,460,!0,!0,null,null,null,null,!0);b.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,c,d,f,m,n){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",
+!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",a):this.openInNewWindow(a,d,f);else{var b=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof b.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var e=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(e?parseInt(e[2],10):!1)?!1:n}if(n||this.isOffline()){b.href=URL.createObjectURL(f?
+this.base64ToBlob(a,d):new Blob([a],{type:d}));n?b.download=c:b.setAttribute("target","_blank");document.body.appendChild(b);try{window.setTimeout(function(){URL.revokeObjectURL(b.href)},2E4),b.click(),b.parentNode.removeChild(b)}catch(x){}}else this.createEchoRequest(a,c,d,f,m).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,c,d,f,m,n){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=m?"&format="+m:"")+(null!=n?"&base64="+
+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,c){c=c||"";for(var b=atob(a),e=b.length,d=Math.ceil(e/1024),f=Array(d),l=0;l<d;++l){for(var u=1024*l,k=Math.min(u+1024,e),y=Array(k-u),q=0;u<k;++q,++u)y[q]=b[u].charCodeAt(0);f[l]=new Uint8Array(y)}return new Blob(f,{type:c})};EditorUi.prototype.saveLocalFile=function(a,c,d,f,m,n,l,k){n=null!=n?n:!1;l=null!=l?l:"vsdx"!=m&&(!mxClient.IS_IOS||!navigator.standalone);m=this.getServiceCount(n);
+isLocalStorage&&m++;var b=4>=m?2:6<m?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(b,c){try{if("_blank"==c)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(a,d,f);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(a,b,d,f,null,k):null!=b&&0<b.length&&this.pickFolder(c,mxUtils.bind(this,function(e){try{this.exportFile(a,
+b,d,f,c,e)}catch(A){this.handleError(A)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,l,null,1<m,b,a,d,f);n=this.isServices(m)?m>b?390:270:160;this.showDialog(c.container,400,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(a,c,d){var b=window.open("about:blank");null==b||null==b.document?mxUtils.popup(a,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?b.document.write("<html>"+
+a+"</html>"):(a=d?a:btoa(unescape(encodeURIComponent(a))),b.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+a+'"/></html>')):b.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),b.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,
"click",c);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)c.apply(this);else{this.exportDialog=document.createElement("div");var e=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";
this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var d=new Spinner({lines:8,length:6,width:5,
radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});d.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(a){d.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",
@@ -3369,8 +3373,8 @@ Editor.cameraLargeImage,mxResources.get("export"))}f.apply(this,arguments)};Edit
function(a,b){if("_blank"==b||null!=a&&0<a.length){var e=d("_blank"==b?null:a,b==App.MODE_DEVICE||"download"==b||null==b||"_blank"==b?"0":"1");null!=e&&(b==App.MODE_DEVICE||"download"==b||"_blank"==b?e.simulate(document,"_blank"):this.pickFolder(b,mxUtils.bind(this,function(d){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,a,n,!0,b,d)}catch(A){this.handleError(A)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();
if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,n,!0,b,d)}catch(A){this.handleError(A)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<b,e,f,n,m);b=this.isServices(b)?4<b?390:270:160;this.showDialog(a.container,380,b,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=
a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,c,d,f,m,n){};EditorUi.prototype.pickFolder=function(a,c,d){c(null)};EditorUi.prototype.exportSvg=function(a,c,d,f,m,n,l,k,x,y,q){if(this.spinner.spin(document.body,mxResources.get("export")))try{var b=this.editor.graph.isSelectionEmpty();d=null!=d?d:b;var e=c?null:this.editor.graph.background;e==mxConstants.NONE&&(e=null);null==e&&0==c&&(e=q?this.editor.graph.defaultPageBackgroundColor:
-"#ffffff");var g=this.editor.graph.getSvg(e,a,l,k,null,d,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,q);f&&this.editor.graph.addSvgShadow(g);var p=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();m&&a.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||
-b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(g);this.editor.graph.mathEnabled&&this.editor.addMathCss(g);n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(g,t,this.thumbImageCache)):t(g)}catch(F){this.handleError(F)}};EditorUi.prototype.addRadiobox=function(a,c,d,f,m,n,l){return this.addCheckbox(a,
+"#ffffff");var g=this.editor.graph.getSvg(e,a,l,k,null,d,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,q);f&&this.editor.graph.addSvgShadow(g);var p=this.getBaseFilename()+".svg",u=mxUtils.bind(this,function(a){this.spinner.stop();m&&a.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||
+b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(g);this.editor.graph.mathEnabled&&this.editor.addMathCss(g);n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(g,u,this.thumbImageCache)):u(g)}catch(F){this.handleError(F)}};EditorUi.prototype.addRadiobox=function(a,c,d,f,m,n,l){return this.addCheckbox(a,
d,f,m,n,l,!0,c)};EditorUi.prototype.addCheckbox=function(a,c,d,f,m,n,l,k){n=null!=n?n:!0;var b=document.createElement("input");b.style.marginRight="8px";b.style.marginTop="16px";b.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();b.id=l;null!=k&&b.setAttribute("name",k);d&&(b.setAttribute("checked","checked"),b.defaultChecked=!0);f&&b.setAttribute("disabled","disabled");n&&(a.appendChild(b),d=document.createElement("label"),mxUtils.write(d,c),d.setAttribute("for",l),a.appendChild(d),
m||mxUtils.br(a));return b};EditorUi.prototype.addEditButton=function(a,c){var b=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);b.style.marginLeft="24px";var e=this.getCurrentFile(),d="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(d=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,
mxResources.get("makeCopy"));f.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");f.appendChild(e);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var a=new FilenameDialog(this,d,mxResources.get("ok"),function(a){null!=a?d=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));
@@ -3383,11 +3387,11 @@ x){x=null!=x?x:this.createUrlParameters(a,c,d,f,m,n);a=this.getCurrentFile();c=!
EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<x.length?"?"+x.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,c,d,f,m,n,l,k,x,y,q){this.getBasenames();var b={};""!=m&&m!=mxConstants.NONE&&(b.highlight=m);"auto"!==f&&(b.target=f);x||(b.lightbox=!1);b.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(b.zoom=d/100);d=[];l&&(d.push("pages"),b.resize=!0,null!=this.pages&&null!=this.currentPage&&
(b.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(d.push("zoom"),b.resize=!0);k&&d.push("layers");0<d.length&&(x&&d.push("lightbox"),b.toolbar=d.join(" "));null!=y&&0<y.length&&(b.edit=y);null!=a?b.url=a:b.xml=this.getFileData(!0,null,null,null,null,!l);c='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";q(c,'<script type="text/javascript" src="'+
(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,c,d,f){var b=document.createElement("div");b.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
-b.appendChild(e);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");e=l.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));
-g.appendChild(p);mxUtils.br(g);g.appendChild(l);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));g.appendChild(p);var k=this.getCurrentFile();null==d&&null!=k&&k.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),g.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));
-e.setAttribute("checked","checked");null==d&&l.setAttribute("disabled","disabled");b.appendChild(g);var q=this.addLinkSection(b),z=this.addCheckbox(b,mxResources.get("zoom"),!0,null,!0);mxUtils.write(b,":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value="100%";b.appendChild(C);var A=this.addCheckbox(b,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,D=
+b.appendChild(e);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var p=document.createElement("input");p.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";p.setAttribute("value","url");p.setAttribute("type","radio");p.setAttribute("name","type-embedhtmldialog");e=p.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var l=document.createElement("span");mxUtils.write(l,mxResources.get("includeCopyOfMyDiagram"));
+g.appendChild(l);mxUtils.br(g);g.appendChild(p);l=document.createElement("span");mxUtils.write(l,mxResources.get("publicDiagramUrl"));g.appendChild(l);var k=this.getCurrentFile();null==d&&null!=k&&k.constructor==window.DriveFile&&(l=document.createElement("a"),l.style.paddingLeft="12px",l.style.color="gray",l.style.cursor="pointer",mxUtils.write(l,mxResources.get("share")),g.appendChild(l),mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));
+e.setAttribute("checked","checked");null==d&&p.setAttribute("disabled","disabled");b.appendChild(g);var q=this.addLinkSection(b),z=this.addCheckbox(b,mxResources.get("zoom"),!0,null,!0);mxUtils.write(b,":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value="100%";b.appendChild(C);var A=this.addCheckbox(b,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,D=
D=this.addCheckbox(b,mxResources.get("allPages"),g,!g),G=this.addCheckbox(b,mxResources.get("layers"),!0),F=this.addCheckbox(b,mxResources.get("lightbox"),!0),I=this.addEditButton(b,F),J=I.getEditInput();J.style.marginBottom="16px";mxEvent.addListener(F,"change",function(){F.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled");J.checked&&F.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,b,
-mxUtils.bind(this,function(){f(l.checked?d:null,z.checked,C.value,q.getTarget(),q.getColor(),A.checked,D.checked,G.checked,F.checked,I.getLink())}),null,a,c);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,c,d,f,m,n,l){l=document.createElement("div");l.style.whiteSpace="nowrap";var b=document.createElement("h3");mxUtils.write(b,a||mxResources.get("link"));b.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";l.appendChild(b);
+mxUtils.bind(this,function(){f(p.checked?d:null,z.checked,C.value,q.getTarget(),q.getColor(),A.checked,D.checked,G.checked,F.checked,I.getLink())}),null,a,c);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,c,d,f,m,n,l){l=document.createElement("div");l.style.whiteSpace="nowrap";var b=document.createElement("h3");mxUtils.write(b,a||mxResources.get("link"));b.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";l.appendChild(b);
var e=this.getCurrentFile(),b="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=e&&e.constructor==window.DriveFile&&!c){a=80;var b="https://desk.draw.io/support/solutions/articles/16000039384",g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));g.appendChild(p);
p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(e.getId())}));p.style.marginTop="12px";p.className="geBtn";g.appendChild(p);l.appendChild(g);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));g.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),
mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var k=null,q=null;if(null!=d||null!=f)a+=30,mxUtils.write(l,mxResources.get("width")+":"),k=document.createElement("input"),k.setAttribute("type","text"),k.style.marginRight="16px",k.style.width="50px",k.style.marginLeft="6px",k.style.marginRight="16px",k.style.marginBottom="10px",
@@ -3397,13 +3401,13 @@ c=new CustomDialog(this,l,mxUtils.bind(this,function(){m(v.getTarget(),v.getColo
b.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(m?"10":"4")+"px";b.appendChild(e);if(m){mxUtils.write(b,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.marginRight="16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";b.appendChild(g);mxUtils.write(b,
mxResources.get("borderWidth")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.value=this.lastExportBorder||"0";b.appendChild(l);mxUtils.br(b)}var p=this.addCheckbox(b,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),k=f?null:this.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),!0),e=this.editor.graph,q=f?null:this.addCheckbox(b,mxResources.get("transparentBackground"),
e.background==mxConstants.NONE||null==e.background);null!=q&&(q.style.marginBottom="16px");a=new CustomDialog(this,b,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(l.value)||0;d(!p.checked,null!=k?k.checked:!1,null!=q?q.checked:!1,a,b)}),null,a,c);this.showDialog(a.container,300,(m?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(a,c,d,f,m,n,l,k){l=null!=l?l:!0;var b=document.createElement("div");b.style.whiteSpace="nowrap";var e=this.editor.graph,g="jpeg"==
-k?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";b.appendChild(p);mxUtils.write(b,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";b.appendChild(t);mxUtils.write(b,mxResources.get("borderWidth")+":");var q=document.createElement("input");
+k?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";b.appendChild(p);mxUtils.write(b,mxResources.get("zoom")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value=this.lastExportZoom||"100%";b.appendChild(u);mxUtils.write(b,mxResources.get("borderWidth")+":");var q=document.createElement("input");
q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.value=this.lastExportBorder||"0";b.appendChild(q);mxUtils.br(b);var v=this.addCheckbox(b,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=k),G=null;"dark"==uiTheme&&(G=this.addCheckbox(b,mxResources.get("dark"),!0),g+=26);var F=this.addCheckbox(b,mxResources.get("selectionOnly"),!1,e.isSelectionEmpty()),I=document.createElement("input");I.style.marginTop="16px";I.style.marginRight=
-"8px";I.style.marginLeft="24px";I.setAttribute("disabled","disabled");I.setAttribute("type","checkbox");n&&(b.appendChild(I),mxUtils.write(b,mxResources.get("crop")),mxUtils.br(b),g+=26,mxEvent.addListener(F,"change",function(){F.checked?I.removeAttribute("disabled"):I.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(I.setAttribute("checked","checked"),I.defaultChecked=!0);var J=this.addCheckbox(b,mxResources.get("shadow"),e.shadowVisible),u=document.createElement("input");u.style.marginTop=
-"16px";u.style.marginRight="8px";u.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||u.setAttribute("disabled","disabled");c&&(b.appendChild(u),mxUtils.write(b,mxResources.get("embedImages")),mxUtils.br(b),g+=26);var K=null;if("png"==k||"jpeg"==k)K=this.addCheckbox(b,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),g+=26;var B=this.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=k),L=null!=this.pages&&1<this.pages.length,
+"8px";I.style.marginLeft="24px";I.setAttribute("disabled","disabled");I.setAttribute("type","checkbox");n&&(b.appendChild(I),mxUtils.write(b,mxResources.get("crop")),mxUtils.br(b),g+=26,mxEvent.addListener(F,"change",function(){F.checked?I.removeAttribute("disabled"):I.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(I.setAttribute("checked","checked"),I.defaultChecked=!0);var J=this.addCheckbox(b,mxResources.get("shadow"),e.shadowVisible),t=document.createElement("input");t.style.marginTop=
+"16px";t.style.marginRight="8px";t.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||t.setAttribute("disabled","disabled");c&&(b.appendChild(t),mxUtils.write(b,mxResources.get("embedImages")),mxUtils.br(b),g+=26);var K=null;if("png"==k||"jpeg"==k)K=this.addCheckbox(b,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),g+=26;var B=this.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=k),L=null!=this.pages&&1<this.pages.length,
O=this.addCheckbox(b,L?mxResources.get("allPages"):"",L,!L,null,"jpeg"!=k);O.style.marginLeft="24px";O.style.marginBottom="16px";L?g+=26:O.style.display="none";mxEvent.addListener(B,"change",function(){B.checked&&L?O.removeAttribute("disabled"):O.setAttribute("disabled","disabled")});l&&L||O.setAttribute("disabled","disabled");var H=document.createElement("select");H.style.maxWidth="260px";H.style.marginLeft="8px";H.style.marginRight="10px";H.className="geBtn";a=document.createElement("option");a.setAttribute("value",
"auto");mxUtils.write(a,mxResources.get("automatic"));H.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));H.appendChild(a);a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));H.appendChild(a);"svg"==k&&(mxUtils.write(b,mxResources.get("links")+":"),b.appendChild(H),mxUtils.br(b),mxUtils.br(b),g+=26);d=new CustomDialog(this,b,mxUtils.bind(this,function(){this.lastExportBorder=
-q.value;this.lastExportZoom=t.value;m(t.value,v.checked,!F.checked,J.checked,B.checked,u.checked,q.value,I.checked,!O.checked,H.value,null!=K?K.checked:null,null!=G?G.checked:null)}),null,d,f);this.showDialog(d.container,340,g,!0,!0,null,null,null,null,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,c,d,f,m){var b=document.createElement("div");b.style.whiteSpace=
+q.value;this.lastExportZoom=u.value;m(u.value,v.checked,!F.checked,J.checked,B.checked,t.checked,q.value,I.checked,!O.checked,H.value,null!=K?K.checked:null,null!=G?G.checked:null)}),null,d,f);this.showDialog(d.container,340,g,!0,!0,null,null,null,null,!0);u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,c,d,f,m){var b=document.createElement("div");b.style.whiteSpace=
"nowrap";var e=this.editor.graph;if(null!=c){var g=document.createElement("h3");mxUtils.write(g,c);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(g)}var l=this.addCheckbox(b,mxResources.get("fit"),!0),p=this.addCheckbox(b,mxResources.get("shadow"),e.shadowVisible&&f,!f),k=this.addCheckbox(b,d),q=this.addCheckbox(b,mxResources.get("lightbox"),!0),C=this.addEditButton(b,q),A=C.getEditInput(),D=1<e.model.getChildCount(e.model.getRoot()),G=this.addCheckbox(b,
mxResources.get("layers"),D,!D);G.style.marginLeft=A.style.marginLeft;G.style.marginBottom="12px";G.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(D&&G.removeAttribute("disabled"),A.removeAttribute("disabled")):(G.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"));A.checked&&q.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,b,mxUtils.bind(this,function(){a(l.checked,
p.checked,k.checked,q.checked,C.getLink(),G.checked)}),null,mxResources.get("embed"),m);this.showDialog(c.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,c,d,f,m,n,l,k){function b(b){var c=" ",g="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
@@ -3416,10 +3420,10 @@ a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years")
a.nodeName){var e=a.getElementsByTagName("diagram");if(0<e.length){var b=e[0],d=c.getGlobalVariable;c.getGlobalVariable=function(a){return"page"==a?b.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:d.apply(this,arguments)}}}null!=b&&(a=Editor.parseDiagramNode(b))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(a)}catch(n){}finally{this.editor.graph=e}return a};EditorUi.prototype.getPngFileProperties=function(a){var b=1,c=0;if(null!=a){if(a.hasAttribute("scale")){var d=
parseFloat(a.getAttribute("scale"));!isNaN(d)&&0<d&&(b=d)}a.hasAttribute("border")&&(d=parseInt(a.getAttribute("border")),!isNaN(d)&&0<d&&(c=d))}return{scale:b,border:c}};EditorUi.prototype.getEmbeddedPng=function(a,c,d,f,m){try{var b=this.editor.graph,e=null!=b.themes&&"darkTheme"==b.defaultThemeName,g=null;if(null!=d&&0<d.length)b=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(b.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,
!0),b),g=d;else if(e||null!=this.pages&&this.currentPage!=this.pages[0]){var b=this.createTemporaryGraph(b.getStylesheet()),l=b.getGlobalVariable,p=this.pages[0];b.getGlobalVariable=function(a){return"page"==a?p.getName():"pagenumber"==a?1:l.apply(this,arguments)};document.body.appendChild(b.container);b.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==g&&(g=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var d=e.toDataURL("image/png"),d=Editor.writeGraphModelToPng(d,
-"tEXt","mxfile",encodeURIComponent(g));a(d.substring(d.lastIndexOf(",")+1));b!=this.editor.graph&&b.container.parentNode.removeChild(b.container)}catch(C){null!=c&&c(C)}}),null,null,null,mxUtils.bind(this,function(a){null!=c&&c(a)}),null,null,f,null,b.shadowVisible,null,b,m)}catch(E){null!=c&&c(E)}};EditorUi.prototype.getEmbeddedSvg=function(a,c,d,f,m,l,k,t){t=null!=t?t:!0;k=c.background;k==mxConstants.NONE&&(k=null);l=c.getSvg(k,null,null,null,null,l);c.shadowVisible&&c.addSvgShadow(l);null!=a&&
-l.setAttribute("content",a);null!=d&&l.setAttribute("resource",d);if(null!=m)this.embedFonts(l,mxUtils.bind(this,function(a){t?this.editor.convertImages(a,mxUtils.bind(this,function(a){m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))})):m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
+"tEXt","mxfile",encodeURIComponent(g));a(d.substring(d.lastIndexOf(",")+1));b!=this.editor.graph&&b.container.parentNode.removeChild(b.container)}catch(C){null!=c&&c(C)}}),null,null,null,mxUtils.bind(this,function(a){null!=c&&c(a)}),null,null,f,null,b.shadowVisible,null,b,m)}catch(E){null!=c&&c(E)}};EditorUi.prototype.getEmbeddedSvg=function(a,c,d,f,m,l,k,u){u=null!=u?u:!0;k=c.background;k==mxConstants.NONE&&(k=null);l=c.getSvg(k,null,null,null,null,l);c.shadowVisible&&c.addSvgShadow(l);null!=a&&
+l.setAttribute("content",a);null!=d&&l.setAttribute("resource",d);if(null!=m)this.embedFonts(l,mxUtils.bind(this,function(a){u?this.editor.convertImages(a,mxUtils.bind(this,function(a){m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))})):m((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(l)};EditorUi.prototype.embedFonts=function(a,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(a,this.editor.resolvedFontCss),this.editor.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.editor.addFontCss(a,b),c(a)}catch(p){c(a)}}))}catch(g){c(a)}}))};
-EditorUi.prototype.exportImage=function(a,c,d,f,m,l,k,t,q,y,E,z){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var b=this.editor.graph.isSelectionEmpty();d=null!=d?d:b;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();try{this.saveCanvas(a,m?this.getFileData(!0,null,null,null,d,t):null,q,null==this.pages||0==this.pages.length,E)}catch(D){"Invalid image"==D.message?this.downloadFile(q):
+EditorUi.prototype.exportImage=function(a,c,d,f,m,l,k,u,q,y,E,z){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var b=this.editor.graph.isSelectionEmpty();d=null!=d?d:b;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();try{this.saveCanvas(a,m?this.getFileData(!0,null,null,null,d,u):null,q,null==this.pages||0==this.pages.length,E)}catch(D){"Invalid image"==D.message?this.downloadFile(q):
this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,c,f,null,null,l,k,y,z)}catch(A){this.spinner.stop(),this.handleError(A)}}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.importXml=function(a,c,d,f,m){c=null!=c?c:0;d=null!=d?d:0;var b=[];try{var e=this.editor.graph;if(null!=a&&0<a.length){e.model.beginUpdate();try{var g=mxUtils.parseXml(a);a={};
var l=this.editor.extractGraphModel(g.documentElement,null!=this.pages);if(null!=l&&"mxfile"==l.nodeName&&null!=this.pages){var p=l.getElementsByTagName("diagram");if(1==p.length)l=Editor.parseDiagramNode(p[0]),null!=this.currentPage&&(a[p[0].getAttribute("id")]=this.currentPage.getId());else if(1<p.length){var g=[],k=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(a[p[0].getAttribute("id")]=this.pages[0].getId(),l=Editor.parseDiagramNode(p[0]),f=!1,k=1);for(;k<p.length;k++){var q=
p[k].getAttribute("id");p[k].removeAttribute("id");var C=this.updatePageRoot(new DiagramPage(p[k]));a[q]=p[k].getAttribute("id");var A=this.pages.length;null==C.getName()&&C.setName(mxResources.get("pageWithNumber",[A+1]));e.model.execute(new ChangePage(this,C,C,A,!0));g.push(C)}this.updatePageLinks(a,g)}}if(null!=l&&"mxGraphModel"===l.nodeName&&(b=e.importGraphModel(l,c,d,f),null!=b))for(k=0;k<b.length;k++)this.updatePageLinksForCell(a,b[k])}finally{e.model.endUpdate()}}}catch(D){if(m)throw D;this.handleError(D)}return b};
@@ -3449,16 +3453,16 @@ a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]}
if(!c){var e=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a,0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,
360,220,!0,!0,function(){window.openFile=null});if(!c){var d=this.dialog,f=d.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=e;f.apply(d,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(a,c,d){var b=this,e=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(e){if(0==Object.keys(e.files).length)d();else{var f=0,g,m=!1;e.forEach(function(a,
b){var e=b.name.toLowerCase();"diagram/diagram.xml"==e?(m=!0,b.async("string").then(function(a){0==a.indexOf("<mxfile ")?c(a):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>f&&(f=e,g=b))});0<f?g.async("string").then(function(e){!b.isOffline()&&(new XMLHttpRequest).upload&&b.isRemoteFileFormat(e,a.name)?b.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?c(a.responseText):d())}),a.name):d()}):m||d()}},
-function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,c,d,f,m,l,k,t,q,y,E){y=null!=y?y:!0;var b=!1,e=null,g=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,k)):b=this.importXml(a,d,f,y);null!=t&&t(b)});"image"==c.substring(0,5)?(q=!1,"image/png"==c.substring(0,9)&&(c=E?null:
+function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,c,d,f,m,l,k,u,q,y,E){y=null!=y?y:!0;var b=!1,e=null,g=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,k)):b=this.importXml(a,d,f,y);null!=u&&u(b)});"image"==c.substring(0,5)?(q=!1,"image/png"==c.substring(0,9)&&(c=E?null:
this.extractGraphModelFromPng(a),null!=c&&0<c.length&&(e=this.importXml(c,d,f,y),q=!0)),q||(c=this.editor.graph,E=a.indexOf(";"),0<E&&(a=a.substring(0,E)+a.substring(a.indexOf(",",E+1))),y&&c.isGridEnabled()&&(d=c.snap(d),f=c.snap(f)),e=[c.insertVertex(null,null,"",d,f,m,l,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";")])):/(\.*<graphml )/.test(a)?(b=!0,this.importGraphML(a,g)):null!=q&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||
-/(\.vs(x|sx?))($|\?)/i.test(k))?(b=!0,this.importVisio(q,g)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(b=!0,this.parseFile(null!=q?q:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(a.responseText):null!=t&&t(null))}),k)):0==a.indexOf("PK")&&null!=q?(b=!0,this.importZipFile(q,g,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y);t(e)}))):/(\.v(sd|dx))($|\?)/i.test(k)||
-/(\.vs(s|x))($|\?)/i.test(k)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y));b||null==t||t(e);return e};EditorUi.prototype.importFiles=function(a,c,d,f,m,l,k,t,q,y,E,z){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var b=null!=c&&null!=d,e=!0;c=null!=c?c:0;d=null!=d?d:0;var g=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=E||this.resampleThreshold,p=0;p<a.length;p++)if("image/"==a[p].type.substring(0,6)&&a[p].size>n){g=!0;break}var x=mxUtils.bind(this,function(){var g=
+/(\.vs(x|sx?))($|\?)/i.test(k))?(b=!0,this.importVisio(q,g)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(b=!0,this.parseFile(null!=q?q:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(a.responseText):null!=u&&u(null))}),k)):0==a.indexOf("PK")&&null!=q?(b=!0,this.importZipFile(q,g,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y);u(e)}))):/(\.v(sd|dx))($|\?)/i.test(k)||
+/(\.vs(s|x))($|\?)/i.test(k)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,y));b||null==u||u(e);return e};EditorUi.prototype.importFiles=function(a,c,d,f,m,l,k,u,q,y,E,z){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var b=null!=c&&null!=d,e=!0;c=null!=c?c:0;d=null!=d?d:0;var g=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=E||this.resampleThreshold,p=0;p<a.length;p++)if("image/"==a[p].type.substring(0,6)&&a[p].size>n){g=!0;break}var x=mxUtils.bind(this,function(){var g=
this.editor.graph,n=g.gridSize;m=null!=m?m:mxUtils.bind(this,function(a,c,e,d,f,g,m,l,n){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,m)),null):this.importFile(a,c,e,d,f,g,m,l,n,b,z)}catch(U){return this.handleError(U),null}});l=null!=l?l:mxUtils.bind(this,function(a){g.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=a.length,q=p,x=[],v=mxUtils.bind(this,function(a,b){x[a]=b;if(0==
---q){this.spinner.stop();if(null!=t)t(x);else{var c=[];g.getModel().beginUpdate();try{for(var e=0;e<x.length;e++){var d=x[e]();null!=d&&(c=c.concat(d))}}finally{g.getModel().endUpdate()}}l(c)}}),A=0;A<p;A++)mxUtils.bind(this,function(b){var l=a[b];if(null!=l){var p=new FileReader;p.onload=mxUtils.bind(this,function(a){if(null==k||k(l))if("image/"==l.type.substring(0,6))if("image/svg"==l.type.substring(0,9)){var p=a.target.result,t=p.indexOf(","),u=decodeURIComponent(escape(atob(p.substring(t+1)))),
-q=mxUtils.parseXml(u),u=q.getElementsByTagName("svg");if(0<u.length){var u=u[0],x=z?null:u.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?v(b,mxUtils.bind(this,function(){try{if(p.substring(0,t+1),null!=q){var a=q.getElementsByTagName("svg");if(0<a.length){var e=a[0],k=e.getAttribute("width"),u=
-e.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,u=null!=u&&"%"!=u.charAt(u.length-1)?parseFloat(u):NaN,x=e.getAttribute("viewBox");if(null==x||0==x.length)e.setAttribute("viewBox","0 0 "+k+" "+u);else if(isNaN(k)||isNaN(u)){var y=x.split(" ");3<y.length&&(k=parseFloat(y[2]),u=parseFloat(y[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(e));var v=Math.min(1,Math.min(f/Math.max(1,k)),f/Math.max(1,u)),B=m(p,l.type,c+b*n,d+b*n,Math.max(1,Math.round(k*v)),Math.max(1,Math.round(u*
-v)),l.name);if(isNaN(k)||isNaN(u)){var A=new Image;A.onload=mxUtils.bind(this,function(){k=Math.max(1,A.width);u=Math.max(1,A.height);B[0].geometry.width=k;B[0].geometry.height=u;e.setAttribute("viewBox","0 0 "+k+" "+u);p=Editor.createSvgDataUri(mxUtils.getXml(e));var a=p.indexOf(";");0<a&&(p=p.substring(0,a)+p.substring(p.indexOf(",",a+1)));g.setCellStyles("image",p,[B[0]])});A.src=Editor.createSvgDataUri(mxUtils.getXml(e))}return B}}}catch(W){}return null})):v(b,mxUtils.bind(this,function(){return m(x,
-"text/xml",c+b*n,d+b*n,0,0,l.name)}))}else v(b,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==l.type){var B=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=B&&0<B.length){var A=new Image;A.src=a.target.result;v(b,mxUtils.bind(this,function(){return m(B,"text/xml",c+b*n,d+b*n,A.width,A.height,l.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),
+--q){this.spinner.stop();if(null!=u)u(x);else{var c=[];g.getModel().beginUpdate();try{for(var e=0;e<x.length;e++){var d=x[e]();null!=d&&(c=c.concat(d))}}finally{g.getModel().endUpdate()}}l(c)}}),A=0;A<p;A++)mxUtils.bind(this,function(b){var l=a[b];if(null!=l){var p=new FileReader;p.onload=mxUtils.bind(this,function(a){if(null==k||k(l))if("image/"==l.type.substring(0,6))if("image/svg"==l.type.substring(0,9)){var p=a.target.result,u=p.indexOf(","),t=decodeURIComponent(escape(atob(p.substring(u+1)))),
+q=mxUtils.parseXml(t),t=q.getElementsByTagName("svg");if(0<t.length){var t=t[0],x=z?null:t.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?v(b,mxUtils.bind(this,function(){try{if(p.substring(0,u+1),null!=q){var a=q.getElementsByTagName("svg");if(0<a.length){var e=a[0],k=e.getAttribute("width"),t=
+e.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,y=e.getAttribute("viewBox");if(null==y||0==y.length)e.setAttribute("viewBox","0 0 "+k+" "+t);else if(isNaN(k)||isNaN(t)){var x=y.split(" ");3<x.length&&(k=parseFloat(x[2]),t=parseFloat(x[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(e));var v=Math.min(1,Math.min(f/Math.max(1,k)),f/Math.max(1,t)),B=m(p,l.type,c+b*n,d+b*n,Math.max(1,Math.round(k*v)),Math.max(1,Math.round(t*
+v)),l.name);if(isNaN(k)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){k=Math.max(1,A.width);t=Math.max(1,A.height);B[0].geometry.width=k;B[0].geometry.height=t;e.setAttribute("viewBox","0 0 "+k+" "+t);p=Editor.createSvgDataUri(mxUtils.getXml(e));var a=p.indexOf(";");0<a&&(p=p.substring(0,a)+p.substring(p.indexOf(",",a+1)));g.setCellStyles("image",p,[B[0]])});A.src=Editor.createSvgDataUri(mxUtils.getXml(e))}return B}}}catch(W){}return null})):v(b,mxUtils.bind(this,function(){return m(x,
+"text/xml",c+b*n,d+b*n,0,0,l.name)}))}else v(b,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==l.type){var B=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=B&&0<B.length){var A=new Image;A.src=a.target.result;v(b,mxUtils.bind(this,function(){return m(B,"text/xml",c+b*n,d+b*n,A.width,A.height,l.name)}));t=!0}}t||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),
mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(g){this.resizeImage(g,a.target.result,mxUtils.bind(this,function(g,k,p){v(b,mxUtils.bind(this,function(){if(null!=g&&g.length<y){var t=e&&this.isResampleImage(a.target.result,E)?Math.min(1,Math.min(f/k,f/p)):1;return m(g,l.type,c+b*n,d+b*n,Math.round(k*t),Math.round(p*t),l.name)}this.handleError({message:mxResources.get("imageTooBig")});
return null}))}),e,f,E)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else p=a.target.result,m(p,l.type,c+b*n,d+b*n,240,160,l.name,function(a){v(b,function(){return a})},l)});/(\.v(dx|sdx?))($|\?)/i.test(l.name)||/(\.vs(x|sx?))($|\?)/i.test(l.name)?m(null,l.type,c+b*n,d+b*n,240,160,l.name,function(a){v(b,function(){return a})},l):"image"==l.type.substring(0,5)||"application/pdf"==l.type?p.readAsDataURL(l):p.readAsText(l)}})(A)});if(g){g=[];
for(p=0;p<a.length;p++)g.push(a[p]);a=g;this.confirmImageResize(function(a){e=a;x()},q)}else x()};EditorUi.prototype.confirmImageResize=function(a,c){c=null!=c?c:!1;var b=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,d=function(e,d){if(e||c)mxSettings.setResizeImages(e?d:null),mxSettings.save();b();a(d)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),
@@ -3472,8 +3476,8 @@ g),l.height=Math.max(l.height,m),c.cellsResized([b],[l],!1));c.setAttributeForCe
null!=d)this.editMermaidData(b,e,d);else{var g=c.getCellStyle(b);"1"==mxUtils.getValue(g,"metaEdit","0")?a.showDataDialog(b):f.apply(this,arguments)}}catch(F){a.handleError(F)}};c.getLinkTitle=function(b){return a.getLinkTitle(b)};c.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(D){a.handleError(D)}return c};var l=this.clearDefaultStyle;this.clearDefaultStyle=function(){l.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink=
"https://desk.draw.io/support/solutions/articles/16000051979");var m=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return m.apply(this,arguments)};var k=c.addClickHandler;c.addClickHandler=function(a,b,e){var d=b;b=function(a,b){if(null==b){var e=mxEvent.getSource(a);
"a"==e.nodeName.toLowerCase()&&(b=e.getAttribute("href"))}null!=b&&c.isCustomLink(b)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&c.customLinkClicked(b)&&mxEvent.consume(a);null!=d&&d(a,b)};k.call(this,a,b,e)};d.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");
-var q=c.getExportVariables;c.getExportVariables=function(){var b=q.apply(this,arguments),c=a.getCurrentFile();null!=c&&(b.filename=c.getTitle());b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var t=c.getGlobalVariable;c.getGlobalVariable=function(b){var c=a.getCurrentFile();return"filename"==b&&null!=c?c.getTitle():"page"==b&&null!=a.currentPage?a.currentPage.getName():
-"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:t.apply(this,arguments)};var x=c.labelLinkClicked;c.labelLinkClicked=function(a,b,e){var d=b.getAttribute("href");if(null==d||!c.isCustomLink(d)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))x.apply(this,arguments);else{if(!c.isEnabled()||null!=a&&c.isCellLocked(a.cell))c.customLinkClicked(d),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=
+var q=c.getExportVariables;c.getExportVariables=function(){var b=q.apply(this,arguments),c=a.getCurrentFile();null!=c&&(b.filename=c.getTitle());b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var u=c.getGlobalVariable;c.getGlobalVariable=function(b){var c=a.getCurrentFile();return"filename"==b&&null!=c?c.getTitle():"page"==b&&null!=a.currentPage?a.currentPage.getName():
+"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:u.apply(this,arguments)};var x=c.labelLinkClicked;c.labelLinkClicked=function(a,b,e){var d=b.getAttribute("href");if(null==d||!c.isCustomLink(d)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))x.apply(this,arguments);else{if(!c.isEnabled()||null!=a&&c.isCellLocked(a.cell))c.customLinkClicked(d),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=
function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var y=this.actions.get("print");y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);y.visible=y.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"find"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",
!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize"),this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,
function(a){var b=this.editor.graph,c=b.cellEditor.text2,e=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=e&&(e.parentNode.removeChild(e),e=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<
@@ -3484,16 +3488,16 @@ null!=y&&(this.styleInput=document.createElement("input"),this.styleInput.setAtt
this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var E=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:E.apply(this,arguments)}}y=document.getElementById("geInfo");
null!=y&&y.parentNode.removeChild(y);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var z=null;mxEvent.addListener(c.container,"dragleave",function(a){c.isEnabled()&&(null!=z&&(z.parentNode.removeChild(z),z=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(a){null==z&&(!mxClient.IS_IE||10<document.documentMode)&&(z=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();
a.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(a){null!=z&&(z.parentNode.removeChild(z),z=null);if(c.isEnabled()){var b=mxUtils.convertPoint(c.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),e=c.view.translate,d=c.view.scale,f=b.x/d-e.x,g=b.y/d-e.y;if(0<a.dataTransfer.files.length)mxEvent.isAltDown(a)&&(g=f=null),this.importFiles(a.dataTransfer.files,f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));
-else{mxEvent.isAltDown(a)&&(g=f=0);var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,b=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=b)c.setSelectionCells(this.importXml(b,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var m=a.dataTransfer.getData("text/html"),b=document.createElement("div");b.innerHTML=c.sanitizeHtml(m);var k=null,e=b.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),
-null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(k=!0)):(e=b.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):(b=b.getElementsByTagName("pre"),null!=b&&1==b.length&&(m=mxUtils.getTextContent(b[0]))));var n=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,g,!0,k,null,n))});k&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;p()},mxEvent.isControlDown(a)):p()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?
-this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(a){var b=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,b)),e/Math.max(1,a));c.setSelectionCell(c.insertVertex(null,null,"",f,g,b*e,a*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){c.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,
+else{mxEvent.isAltDown(a)&&(g=f=0);var m=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,b=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=b)c.setSelectionCells(this.importXml(b,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),b=document.createElement("div");b.innerHTML=c.sanitizeHtml(l);var k=null,e=b.getElementsByTagName("img");null!=e&&1==e.length?(l=e[0].getAttribute("src"),
+null==l&&(l=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(k=!0)):(e=b.getElementsByTagName("a"),null!=e&&1==e.length?l=e[0].getAttribute("href"):(b=b.getElementsByTagName("pre"),null!=b&&1==b.length&&(l=mxUtils.getTextContent(b[0]))));var n=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(l,f,g,!0,k,null,n))});k&&null!=l&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;p()},mxEvent.isControlDown(a)):p()}else null!=m&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)?
+this.loadImage(decodeURIComponent(m),mxUtils.bind(this,function(a){var b=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,b)),e/Math.max(1,a));c.setSelectionCell(c.insertVertex(null,null,"",f,g,b*e,a*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+m+";"))}),mxUtils.bind(this,function(a){c.setSelectionCells(this.insertTextAt(m,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,
"text/plain")&&c.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,e=!1,d=0;d<c.types.length;d++)if("text/"===
c.types[d].substring(0,5)){e=!0;break}if(!e){var f=c.items;for(index in f){var l=f[index];if("file"===l.kind){if(a.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(b,c,e,d,f,g){a.insertImage(b,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(x){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=
function(){function a(){window.setTimeout(function(){d.innerHTML="&nbsp;";d.focus();document.execCommand("selectAll",!1,null)},0)}var c=this.editor.graph,d=document.createElement("div");d.setAttribute("autocomplete","off");d.setAttribute("autocorrect","off");d.setAttribute("autocapitalize","off");d.setAttribute("spellcheck","false");d.style.textRendering="optimizeSpeed";d.style.fontFamily="monospace";d.style.wordBreak="break-all";d.style.background="transparent";d.style.color="transparent";d.style.position=
"absolute";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.display="block";d.style.fontSize="1";d.style.zIndex="-1";d.style.resize="none";d.style.outline="none";d.style.width="1px";d.style.height="1px";mxUtils.setOpacity(d,0);d.contentEditable=!0;d.innerHTML="&nbsp;";var f=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);
null==c.container||!c.isEnabled()||c.isMouseDown||c.isEditing()||null!=this.dialog||"INPUT"==b.nodeName||"TEXTAREA"==b.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||f||(d.style.left=c.container.scrollLeft+10+"px",d.style.top=c.container.scrollTop+10+"px",c.container.appendChild(d),f=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){d.focus();document.execCommand("selectAll",!1,null)},0):(d.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,
"keyup",mxUtils.bind(this,function(a){var b=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=b&&17!=b&&91!=b||(f=!1,c.isEditing()||null!=this.dialog||null==c.container||c.container.focus(),d.parentNode.removeChild(d),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(d,"copy",mxUtils.bind(this,function(b){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(d),a()}catch(v){this.handleError(v)}}));mxEvent.addListener(d,"cut",mxUtils.bind(this,function(b){if(c.isEnabled())try{mxClipboard.copy(c),
-this.copyCells(d,!0),a()}catch(v){this.handleError(v)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&((new Date).getTime(),d.innerHTML="&nbsp;",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0,!0),mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,d,!1,!0)}),0))}),!0);var l=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:l.apply(this,arguments)}};
+this.copyCells(d,!0),a()}catch(v){this.handleError(v)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&((new Date).getTime(),d.innerHTML="&nbsp;",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0,!0),mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,d,!1,!0)}),0))}),!0);var m=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:m.apply(this,arguments)}};
EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||
"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),
this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(b){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(a,c){var b=c.getProperty("customFonts");this.menus.customFonts=b;mxSettings.setCustomFonts(b);mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));
@@ -3516,7 +3520,7 @@ Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.edi
c,d,f,l){if(null!=c&&0<c.length){!this.useCanvasForExport&&/(\.png)$/i.test(c)?c=c.substring(0,c.length-4)+".drawio":/(\.pdf)$/i.test(c)&&(c=c.substring(0,c.length-4)+".drawio");var b=mxUtils.bind(this,function(a){c=0<=c.lastIndexOf(".")?c.substring(0,c.lastIndexOf("."))+".drawio":c+".drawio";if("<mxlibrary"==a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,a,c))}catch(x){this.handleError(x,
mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,c,f)});if(/(\.v(dx|sdx?))($|\?)/i.test(c)||/(\.vs(x|sx?))($|\?)/i.test(c))this.importVisio(d,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}));else if(/(\.*<graphml )/.test(a))this.importGraphML(a,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,c))this.parseFile(d,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),
200<=a.status&&299>=a.status?b(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(a))/(\.json)$/i.test(c)&&(c=c.substring(0,c.length-5)+".drawio"),this.convertLucidChart(a,mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,c,f)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==a.substring(0,10)){this.spinner.stop();
-null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,a,d.name))}catch(t){this.handleError(t,mxResources.get("errorLoadingFile"))}}else if(0==a.indexOf("PK"))this.importZipFile(d,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(a,c,f)}));else{if("image/png"==d.type.substring(0,9))a=this.extractGraphModelFromPng(a);else if("application/pdf"==
+null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,a,d.name))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}else if(0==a.indexOf("PK"))this.importZipFile(d,mxUtils.bind(this,function(a){this.spinner.stop();b(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(a,c,f)}));else{if("image/png"==d.type.substring(0,9))a=this.extractGraphModelFromPng(a);else if("application/pdf"==
d.type){var e=Editor.extractGraphModelFromPdf(a);null!=e&&(a=e)}this.spinner.stop();this.openLocalFile(a,c,f,l,null!=l?d:null)}}};EditorUi.prototype.openFiles=function(a,c){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var b=0;b<a.length;b++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.openFileHandle(b.target.result,a.name,a,c)}catch(v){this.handleError(v)}});b.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);
window.openFile=null});"image"!==a.type.substring(0,5)&&"application/pdf"!==a.type||"image/svg"===a.type.substring(0,9)?b.readAsText(a):b.readAsDataURL(a)})(a[b])};EditorUi.prototype.openLocalFile=function(a,c,d,f,l){var b=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==c&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var b=mxUtils.parseXml(a);null!=b&&(this.editor.setGraphXml(b.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,
a,c||this.defaultFilename,d,f,l))});if(null!=a&&0<a.length)null==b||!b.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=b&&b.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,c),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=b&&b.isModified()?
@@ -3531,13 +3535,13 @@ l);mxEvent.addListener(window,"message",mxUtils.bind(this,function(e){if(e.sourc
(a=Graph.decompress(a)))}catch(da){}return a});if("json"==urlParams.proto){try{g=JSON.parse(g)}catch(U){g=null}try{if(null==g)return;if("dialog"==g.action){this.showError(null!=g.titleKey?mxResources.get(g.titleKey):g.title,null!=g.messageKey?mxResources.get(g.messageKey):g.message,null!=g.buttonKey?mxResources.get(g.buttonKey):g.button);null!=g.modified&&(this.editor.modified=g.modified);return}if("prompt"==g.action){this.spinner.stop();var m=new FilenameDialog(this,g.defaultValue||"",null!=g.okKey?
mxResources.get(g.okKey):g.ok,function(a){null!=a?k.postMessage(JSON.stringify({event:"prompt",value:a,message:g}),"*"):k.postMessage(JSON.stringify({event:"prompt-cancel",message:g}),"*")},null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(m.container,300,80,!0,!1);m.init();return}if("draft"==g.action){var n=l(g.xml);this.spinner.stop();m=new DraftDialog(this,mxResources.get("draftFound",[g.name||this.defaultFilename]),n,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",
result:"edit",message:g}),"*")}),mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:g}),"*")}),g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(m.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));
-try{m.init()}catch(U){k.postMessage(JSON.stringify({event:"draft",error:U.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var p=1==g.enableRecent,q=1==g.enableSearch,t=1==g.enableCustomTemp,m=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,message:g}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),
-null,null,null,null,null,null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,t?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},
+try{m.init()}catch(U){k.postMessage(JSON.stringify({event:"draft",error:U.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var p=1==g.enableRecent,q=1==g.enableSearch,u=1==g.enableCustomTemp,m=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,message:g}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),
+null,null,null,null,null,null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,u?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},
0)})}):null);this.showDialog(m.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));m.init();return}if("textContent"==g.action){var x=this.getDiagramTextContent();k.postMessage(JSON.stringify({event:"textContent",data:x,message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=
-g.modified);return}if("spinner"==g.action){var v=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,v):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var J=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var u=this.editor.graph,K=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);
-this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=J;k.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=Editor.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(J)));u!=this.editor.graph&&u.container.parentNode.removeChild(u.container);K(a)}),L=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=
-L){for(var O=u.getGlobalVariable,u=this.createTemporaryGraph(u.getStylesheet()),H,S=0;S<this.pages.length;S++)if(this.pages[S].getId()==L){H=this.updatePageRoot(this.pages[S]);break}u.getGlobalVariable=function(a){return"page"==a?H.getName():"pagenumber"==a?1:O.apply(this,arguments)};document.body.appendChild(u.container);u.model.setRoot(H.root)}if(null!=g.layerIds){for(var fa=u.model,ga=fa.getChildCells(fa.getRoot()),m={},S=0;S<g.layerIds.length;S++)m[g.layerIds[S]]=!0;for(S=0;S<ga.length;S++)fa.setVisible(ga[S],
-m[ga[S].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,g.scale,null,null,null,u)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=L?"&pageId="+L:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(J))).send(mxUtils.bind(this,function(a){200<=
+g.modified);return}if("spinner"==g.action){var v=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,v):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var J=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var t=this.editor.graph,K=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);
+this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=J;k.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=Editor.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(J)));t!=this.editor.graph&&t.container.parentNode.removeChild(t.container);K(a)}),L=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=
+L){for(var O=t.getGlobalVariable,t=this.createTemporaryGraph(t.getStylesheet()),H,S=0;S<this.pages.length;S++)if(this.pages[S].getId()==L){H=this.updatePageRoot(this.pages[S]);break}t.getGlobalVariable=function(a){return"page"==a?H.getName():"pagenumber"==a?1:O.apply(this,arguments)};document.body.appendChild(t.container);t.model.setRoot(H.root)}if(null!=g.layerIds){for(var fa=t.model,ga=fa.getChildCells(fa.getRoot()),m={},S=0;S<g.layerIds.length;S++)m[g.layerIds[S]]=!0;for(S=0;S<ga.length;S++)fa.setVisible(ga[S],
+m[ga[S].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,g.scale,null,null,null,t)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=L?"&pageId="+L:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(J))).send(mxUtils.bind(this,function(a){200<=
a.getStatus()&&299>=a.getStatus()?K("data:image/png;base64,"+a.getText()):B(null)}),mxUtils.bind(this,function(){B(null)}))}}else{null!=g.xml&&0<g.xml.length&&this.setFileData(g.xml);v=this.createLoadMessage("export");v.message=g;if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ba=this.getXmlFileData();v.xml=mxUtils.getXml(ba);v.data=this.getFileData(null,null,!0,null,null,null,ba);v.format=g.format}else if("html"==g.format)J=this.editor.getGraphXml(),
v.data=this.getHtml(J,this.editor.graph),v.xml=mxUtils.getXml(J),v.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;var Y=this.editor.graph.background;Y==mxConstants.NONE&&(Y=null);v.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);v.format="svg";var X=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();v.data=Editor.createSvgDataUri(a);k.postMessage(JSON.stringify(v),"*")});if("xmlsvg"==g.format)(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,
null!=g.spinKey?mxResources.get(g.spinKey):g.spin))&&this.getEmbeddedSvg(v.xml,this.editor.graph,null,!0,X,null,null,g.embedImages);else if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){this.editor.graph.setEnabled(!1);var ca=this.editor.graph.getSvg(Y);this.embedFonts(ca,mxUtils.bind(this,function(a){g.embedImages||null==g.embedImages?this.editor.convertImages(a,mxUtils.bind(this,function(a){X(mxUtils.getXml(a))})):X(mxUtils.getXml(a))}))}return}k.postMessage(JSON.stringify(v),
@@ -3553,13 +3557,13 @@ a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.st
c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),
a.appendChild(c),d=c));"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("exit")),c.setAttribute("title",mxResources.get("exit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),a.appendChild(c),d=c);d.style.marginRight="20px";this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};
EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=
-function(a,c){for(var b=this.editor.graph,d=b.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](b);if(null!=a[e].config)for(var l in a[e].config)f[l]=a[e].config[l];this.executeLayout(function(){f.execute(b.getDefaultParent(),0==d.length?null:d)},e==a.length-1,c)}};EditorUi.prototype.importCsv=function(a,c){try{var b=a.split("\n"),d=[],e=[],f={};if(0<b.length){var l={},k=null,q=null,y=null,E=null,z=null,C=null,A=null,D=null,G="",F="auto",I="auto",J=null,u=null,K=40,B=40,L=100,
+function(a,c){for(var b=this.editor.graph,d=b.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](b);if(null!=a[e].config)for(var l in a[e].config)f[l]=a[e].config[l];this.executeLayout(function(){f.execute(b.getDefaultParent(),0==d.length?null:d)},e==a.length-1,c)}};EditorUi.prototype.importCsv=function(a,c){try{var b=a.split("\n"),d=[],e=[],f={};if(0<b.length){var l={},k=null,q=null,y=null,E=null,z=null,C=null,A=null,D=null,G="",F="auto",I="auto",J=null,t=null,K=40,B=40,L=100,
O=0,H=this.editor.graph;H.getGraphBounds();for(var S=function(){null!=c?c(ra):(H.setSelectionCells(ra),H.scrollCellToVisible(H.getSelectionCell()))},fa=H.getFreeInsertPoint(),ga=fa.x,ba=fa.y,fa=ba,Y=null,X="auto",D=null,ca=[],ha=null,ea=null,U=0;U<b.length&&"#"==b[U].charAt(0);){a=b[U];for(U++;U<b.length&&"\\"==a.charAt(a.length-1)&&"#"==b[U].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(b[U].substring(1)),U++;if("#"!=a.charAt(1)){var da=a.indexOf(":");if(0<da){var Q=mxUtils.trim(a.substring(1,
-da)),M=mxUtils.trim(a.substring(da+1));"label"==Q?Y=H.sanitizeHtml(M):"labelname"==Q&&0<M.length&&"-"!=M?E=M:"labels"==Q&&0<M.length&&"-"!=M?z=JSON.parse(M):"style"==Q?k=M:"parentstyle"==Q?C=M:"stylename"==Q&&0<M.length&&"-"!=M?y=M:"styles"==Q&&0<M.length&&"-"!=M?q=JSON.parse(M):"identity"==Q&&0<M.length&&"-"!=M?A=M:"parent"==Q&&0<M.length&&"-"!=M?D=M:"namespace"==Q&&0<M.length&&"-"!=M?G=M:"width"==Q?F=M:"height"==Q?I=M:"left"==Q&&0<M.length?J=M:"top"==Q&&0<M.length?u=M:"ignore"==Q?ea=M.split(","):
+da)),M=mxUtils.trim(a.substring(da+1));"label"==Q?Y=H.sanitizeHtml(M):"labelname"==Q&&0<M.length&&"-"!=M?E=M:"labels"==Q&&0<M.length&&"-"!=M?z=JSON.parse(M):"style"==Q?k=M:"parentstyle"==Q?C=M:"stylename"==Q&&0<M.length&&"-"!=M?y=M:"styles"==Q&&0<M.length&&"-"!=M?q=JSON.parse(M):"identity"==Q&&0<M.length&&"-"!=M?A=M:"parent"==Q&&0<M.length&&"-"!=M?D=M:"namespace"==Q&&0<M.length&&"-"!=M?G=M:"width"==Q?F=M:"height"==Q?I=M:"left"==Q&&0<M.length?J=M:"top"==Q&&0<M.length?t=M:"ignore"==Q?ea=M.split(","):
"connect"==Q?ca.push(JSON.parse(M)):"link"==Q?ha=M:"padding"==Q?O=parseFloat(M):"edgespacing"==Q?K=parseFloat(M):"nodespacing"==Q?B=parseFloat(M):"levelspacing"==Q?L=parseFloat(M):"layout"==Q&&(X=M)}}}if(null==b[U])throw Error(mxResources.get("invalidOrMissingFile"));for(var la=this.editor.csvToArray(b[U]),Q=da=null,M=[],P=0;P<la.length;P++)A==la[P]&&(da=P),D==la[P]&&(Q=P),M.push(mxUtils.trim(la[P]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Y&&(Y="%"+M[0]+"%");if(null!=
ca)for(var T=0;T<ca.length;T++)null==l[ca[T].to]&&(l[ca[T].to]={});A=[];for(P=U+1;P<b.length;P++){var ja=this.editor.csvToArray(b[P]);if(null==ja){var sa=40<b[P].length?b[P].substring(0,40)+"...":b[P];throw Error(sa+" ("+P+"):\n"+mxResources.get("containsValidationErrors"));}0<ja.length&&A.push(ja)}H.model.beginUpdate();try{for(P=0;P<A.length;P++){var ja=A[P],N=null,oa=null!=da?G+ja[da]:null;null!=oa&&(N=H.model.getCell(oa));var b=null!=N,W=new mxCell(Y,new mxGeometry(ga,fa,0,0),k||"whiteSpace=wrap;html=1;");
W.vertex=!0;W.id=oa;for(var Z=0;Z<ja.length;Z++)H.setAttributeForCell(W,M[Z],ja[Z]);if(null!=E&&null!=z){var R=z[W.getAttribute(E)];null!=R&&H.labelChanged(W,R)}if(null!=y&&null!=q){var ia=q[W.getAttribute(y)];null!=ia&&(W.style=ia)}H.setAttributeForCell(W,"placeholders","1");W.style=H.replacePlaceholders(W,W.style);b&&(H.model.setGeometry(N,W.geometry),H.model.setStyle(N,W.style),0>mxUtils.indexOf(e,N)&&e.push(N));N=W;if(!b)for(T=0;T<ca.length;T++)l[ca[T].to][N.getAttribute(ca[T].to)]=N;null!=ha&&
-"link"!=ha&&(H.setLinkForCell(N,N.getAttribute(ha)),H.setAttributeForCell(N,ha,null));H.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var ka=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=J&&null!=N.getAttribute(J)&&(N.geometry.x=ga+parseFloat(N.getAttribute(J))),null!=u&&null!=N.getAttribute(u)&&(N.geometry.y=ba+parseFloat(N.getAttribute(u))),"@"==F.charAt(0)&&null!=N.getAttribute(F.substring(1))?N.geometry.width=parseFloat(N.getAttribute(F.substring(1))):N.geometry.width=
+"link"!=ha&&(H.setLinkForCell(N,N.getAttribute(ha)),H.setAttributeForCell(N,ha,null));H.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var ka=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=J&&null!=N.getAttribute(J)&&(N.geometry.x=ga+parseFloat(N.getAttribute(J))),null!=t&&null!=N.getAttribute(t)&&(N.geometry.y=ba+parseFloat(N.getAttribute(t))),"@"==F.charAt(0)&&null!=N.getAttribute(F.substring(1))?N.geometry.width=parseFloat(N.getAttribute(F.substring(1))):N.geometry.width=
"auto"==F?ka.width+O:parseFloat(F),"@"==I.charAt(0)&&null!=N.getAttribute(I.substring(1))?N.geometry.height=parseFloat(N.getAttribute(I.substring(1))):N.geometry.height="auto"==I?ka.height+O:parseFloat(I),fa+=N.geometry.height+B);b?(null==f[oa]&&(f[oa]=[]),f[oa].push(N)):(D=null!=Q?H.model.getCell(G+ja[Q]):null,d.push(N),null!=D?(D.style=H.replacePlaceholders(D,C),H.addCell(N,D)):e.push(H.addCell(N)))}for(var qa=e.slice(),ra=e.slice(),T=0;T<ca.length;T++)for(var Aa=ca[T],P=0;P<d.length;P++){var N=
d[P],wa=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d&&(H.setAttributeForCell(b,c.from,null),""!=d))for(var d=d.split(","),e=0;e<d.length;e++){var f=l[c.to][d[e]];if(null!=f){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||"")+(g||""));null!=c.tolabel&&(g=(g||"")+(f.getAttribute(c.tolabel)||""));var m="target"==c.placeholders==!c.invert?f:a,m=null!=c.style?H.replacePlaceholders(m,c.style):H.createCurrentEdgeStyle(),g=H.insertEdge(null,null,g||"",c.invert?
f:a,c.invert?a:f,m);if(null!=c.labels)for(m=0;m<c.labels.length;m++){var k=c.labels[m],n=new mxCell(k.label||m,new mxGeometry(null!=k.x?k.x:0,null!=k.y?k.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;if(null!=k.dx||null!=k.dy)n.geometry.offset=new mxPoint(null!=k.dx?k.dx:0,null!=k.dy?k.dy:0);g.insert(n)}ra.push(g);mxUtils.remove(c.invert?a:f,qa)}}});wa(N,N,Aa);if(null!=f[N.id])for(Z=0;Z<f[N.id].length;Z++)wa(N,f[N.id][Z],Aa)}if(null!=ea)for(P=0;P<d.length;P++)for(N=
@@ -3598,14 +3602,14 @@ isLocalStorage)}catch(v){null!=c&&c(v)}};d.onsuccess=mxUtils.bind(this,function(
urlParams.forceMigration);document.body.appendChild(b);var c=!0,d=!1,e,f=0,g=mxUtils.bind(this,function(){d=!0;this.setDatabaseItem(".drawioMigrated3",!0);b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){f++;k()}),k=mxUtils.bind(this,function(){try{if(f>=e.length)g();else{var a=e[f];StorageFile.getFileContent(this,a,mxUtils.bind(this,function(c){null==c||".scratchpad"==a&&c==this.emptyLibraryXml?b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
funtionName:"getLocalStorageFile",functionArgs:[a]}),"*"):l()}),l)}}catch(I){console.log(I)}}),m=mxUtils.bind(this,function(a){try{this.setDatabaseItem(null,[{title:a.title,size:a.data.length,lastModified:Date.now(),type:a.isLib?"L":"F"},{title:a.title,data:a.data}],l,l,["filesInfo","files"])}catch(I){console.log(I)}});a=mxUtils.bind(this,function(a){try{if(a.source==b.contentWindow){var f={};try{f=JSON.parse(a.data)}catch(J){}"init"==f.event?(b.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
"*"),b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=f.event||d||(c?null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?(e=f.resp[0],c=!1,k()):g():null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?m(f.resp[0]):l())}}catch(J){console.log(J)}});window.addEventListener("message",a)}})));a(c);c.onversionchange=function(){c.close()}});d.onerror=c;d.onblocked=function(){}}catch(m){null!=c&&c(m)}else null!=c&&c()}else a(this.database)};
-EditorUi.prototype.setDatabaseItem=function(a,c,d,f,l){this.openDatabase(mxUtils.bind(this,function(b){try{l=l||"objects";Array.isArray(l)||(l=[l],a=[a],c=[c]);var e=b.transaction(l,"readwrite");e.oncomplete=d;e.onerror=f;for(b=0;b<l.length;b++)e.objectStore(l[b]).put(null!=a&&null!=a[b]?{key:a[b],data:c[b]}:c[b])}catch(t){null!=f&&f(t)}}),f)};EditorUi.prototype.removeDatabaseItem=function(a,c,d,f){this.openDatabase(mxUtils.bind(this,function(b){f=f||"objects";Array.isArray(f)||(f=[f],a=[a]);b=b.transaction(f,
+EditorUi.prototype.setDatabaseItem=function(a,c,d,f,l){this.openDatabase(mxUtils.bind(this,function(b){try{l=l||"objects";Array.isArray(l)||(l=[l],a=[a],c=[c]);var e=b.transaction(l,"readwrite");e.oncomplete=d;e.onerror=f;for(b=0;b<l.length;b++)e.objectStore(l[b]).put(null!=a&&null!=a[b]?{key:a[b],data:c[b]}:c[b])}catch(u){null!=f&&f(u)}}),f)};EditorUi.prototype.removeDatabaseItem=function(a,c,d,f){this.openDatabase(mxUtils.bind(this,function(b){f=f||"objects";Array.isArray(f)||(f=[f],a=[a]);b=b.transaction(f,
"readwrite");b.oncomplete=c;b.onerror=d;for(var e=0;e<f.length;e++)b.objectStore(f[e])["delete"](a[e])}),d)};EditorUi.prototype.getDatabaseItem=function(a,c,d,f){this.openDatabase(mxUtils.bind(this,function(b){try{f=f||"objects";var e=b.transaction([f],"readonly").objectStore(f).get(a);e.onsuccess=function(){c(e.result)};e.onerror=d}catch(v){null!=d&&d(v)}}),d)};EditorUi.prototype.getDatabaseItems=function(a,c,d){this.openDatabase(mxUtils.bind(this,function(b){try{d=d||"objects";var e=b.transaction([d],
"readonly").objectStore(d).openCursor(IDBKeyRange.lowerBound(0)),f=[];e.onsuccess=function(b){null==b.target.result?a(f):(f.push(b.target.result.value),b.target.result["continue"]())};e.onerror=c}catch(v){null!=c&&c(v)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(a,c,d){this.openDatabase(mxUtils.bind(this,function(b){try{d=d||"objects";var e=b.transaction([d],"readonly").objectStore(d).getAllKeys();e.onsuccess=function(){a(e.result)};e.onerror=c}catch(n){null!=c&&c(n)}}),c)};EditorUi.prototype.commentsSupported=
function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(a,c){var b=this.getCurrentFile();null!=b?b.getComments(a,c):a([])};EditorUi.prototype.addComment=function(a,c,d){var b=this.getCurrentFile();
null!=b?b.addComment(a,c,d):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,c){var b=this.getCurrentFile();return null!=b?b.newComment(a,c):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();
return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,c){var b=this.getCurrentFile();null!=b&&b.getRevisions?b.getRevisions(a,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language",
-"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(a,c,d,f,l,k,q,t){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(a,c,d,f,l,k,q,t)};EditorUi.prototype.loadFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(a)};EditorUi.prototype.createSvgDataUri=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(a)};EditorUi.prototype.embedCssFonts=function(a,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
-return this.editor.embedCssFonts(a,c)};EditorUi.prototype.embedExtFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(a)};EditorUi.prototype.exportToCanvas=function(a,c,d,f,l,k,q,t,x,y,E,z,C,A,D,G){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(a,c,d,f,l,k,q,t,x,y,E,z,C,A,D,G)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
+"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(a,c,d,f,l,k,q,u){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(a,c,d,f,l,k,q,u)};EditorUi.prototype.loadFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(a)};EditorUi.prototype.createSvgDataUri=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(a)};EditorUi.prototype.embedCssFonts=function(a,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
+return this.editor.embedCssFonts(a,c)};EditorUi.prototype.embedExtFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(a)};EditorUi.prototype.exportToCanvas=function(a,c,d,f,l,k,q,u,x,y,E,z,C,A,D,G){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(a,c,d,f,l,k,q,u,x,y,E,z,C,A,D,G)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(a,c,d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(a,c,d,f)};EditorUi.prototype.convertImageToDataUri=function(a,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(a,c)};EditorUi.prototype.base64Encode=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(a)};EditorUi.prototype.updateCRC=
function(a,c,d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(a,c,d,f)};EditorUi.prototype.crc32=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(a)};EditorUi.prototype.writeGraphModelToPng=function(a,c,d,f,l){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(a,c,d,f,l)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var a=[],c=0;c<localStorage.length;c++){var d=localStorage.key(c),f=localStorage.getItem(d);if(0<d.length&&(".scratchpad"==d||"."!=d.charAt(0))&&0<f.length){var l="<mxfile "===f.substring(0,8)||"<?xml"===f.substring(0,5)||"\x3c!--[if IE]>"===f.substring(0,12),f="<mxlibrary>"===f.substring(0,11);(l||f)&&a.push(d)}}return a};EditorUi.prototype.getLocalStorageFile=function(a){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
@@ -3613,29 +3617,29 @@ var b=localStorage.getItem(a);return{title:a,data:b,isLib:"<mxlibrary>"===b.subs
var CommentsWindow=function(a,c,f,d,k,l){function q(){for(var a=z.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==z&&b++;C.style.display=0==b?"block":"none"}function b(a,b,c,d){function e(){b.removeChild(l);b.removeChild(k);g.style.display="block";f.style.display="block"}x={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var k=document.createElement("div");k.className="geCommentEditBtns";var m=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),q()):e();x=null});m.className="geCommentEditBtn";k.appendChild(m);var n=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);x=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(n.click(),mxEvent.consume(a)):27==a.keyCode&&(m.click(),mxEvent.consume(a)))}));n.focus();n.className="geCommentEditBtn gePrimaryBtn";k.appendChild(n);b.insertBefore(k,f);g.style.display="none";f.style.display="none";l.focus()}function e(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
-[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function g(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function p(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function m(a){a.style.border="";a.removeChild(a.busyImg)}function n(c,d,f,l,k){function u(a,b,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
-"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){b(a,c);a.preventDefault();mxEvent.consume(a)});E.appendChild(e);d&&(e.style.display="none")}function B(){function a(c){b.push(d);if(null!=c.replies)for(var e=0;e<c.replies.length;e++)d=d.nextSibling,a(c.replies[e])}var b=[],d=y;a(c);return{pdiv:d,replies:b}}function A(d,e,f,k,q){function t(){g(v);c.addReply(A,function(a){A.id=a;c.replies.push(A);m(v);f&&f()},function(b){u();p(v);a.handleError(b,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,q)}function u(){b(A,v,function(a){t()},!0)}var x=B().pdiv,A=a.newComment(d,a.getCurrentUser());A.pCommentId=c.id;null==c.replies&&(c.replies=[]);var v=n(A,c.replies,x,l+1);e?u():t()}if(k||!c.isResolved){C.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",c.id);y.style.marginLeft=20*l+5+"px";c.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite");
+[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function g(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function p(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function m(a){a.style.border="";a.removeChild(a.busyImg)}function n(c,d,f,l,k){function t(a,b,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
+"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){b(a,c);a.preventDefault();mxEvent.consume(a)});E.appendChild(e);d&&(e.style.display="none")}function B(){function a(c){b.push(d);if(null!=c.replies)for(var e=0;e<c.replies.length;e++)d=d.nextSibling,a(c.replies[e])}var b=[],d=y;a(c);return{pdiv:d,replies:b}}function A(d,e,f,k,q){function t(){g(y);c.addReply(A,function(a){A.id=a;c.replies.push(A);m(y);f&&f()},function(b){u();p(y);a.handleError(b,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,q)}function u(){b(A,y,function(a){t()},!0)}var x=B().pdiv,A=a.newComment(d,a.getCurrentUser());A.pCommentId=c.id;null==c.replies&&(c.replies=[]);var y=n(A,c.replies,x,l+1);e?u():t()}if(k||!c.isResolved){C.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",c.id);y.style.marginLeft=20*l+5+"px";c.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite");
var D=document.createElement("div");D.className="geCommentHeader";var L=document.createElement("img");L.className="geCommentUserImg";L.src=c.user.pictureUrl||Editor.userImage;D.appendChild(L);L=document.createElement("div");L.className="geCommentHeaderTxt";D.appendChild(L);var F=document.createElement("div");F.className="geCommentUsername";mxUtils.write(F,c.user.displayName||"");L.appendChild(F);F=document.createElement("div");F.className="geCommentDate";F.setAttribute("data-commentId",c.id);e(c,
-F);L.appendChild(F);y.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");y.appendChild(D);c.isLocked&&(y.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var E=document.createElement("ul");E.className="geCommentActionsList";D.appendChild(E);v||c.isLocked||0!=l&&!t||u(mxResources.get("reply"),function(){A("",!0)},c.isResolved);L=a.getCurrentUser();null==L||L.id!=c.user.id||v||c.isLocked||(u(mxResources.get("edit"),
-function(){function d(){b(c,y,function(){g(y);c.editComment(c.content,function(){m(y)},function(b){p(y);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),u(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){g(y);c.deleteComment(function(a){if(!0===a){a=y.querySelector(".geCommentTxt");a.innerHTML="";mxUtils.write(a,mxResources.get("msgDeleted"));var b=y.querySelectorAll(".geCommentAction");for(a=
-0;a<b.length;a++)b[a].parentNode.removeChild(b[a]);m(y);y.style.opacity="0.5"}else{b=B(c).replies;for(a=0;a<b.length;a++)z.removeChild(b[a]);for(a=0;a<d.length;a++)if(d[a]==c){d.splice(a,1);break}C.style.display=0==z.getElementsByTagName("div").length?"block":"none"}},function(b){p(y);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||u(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function b(){var b=
+F);L.appendChild(F);y.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");y.appendChild(D);c.isLocked&&(y.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var E=document.createElement("ul");E.className="geCommentActionsList";D.appendChild(E);v||c.isLocked||0!=l&&!u||t(mxResources.get("reply"),function(){A("",!0)},c.isResolved);L=a.getCurrentUser();null==L||L.id!=c.user.id||v||c.isLocked||(t(mxResources.get("edit"),
+function(){function d(){b(c,y,function(){g(y);c.editComment(c.content,function(){m(y)},function(b){p(y);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),t(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){g(y);c.deleteComment(function(a){if(!0===a){a=y.querySelector(".geCommentTxt");a.innerHTML="";mxUtils.write(a,mxResources.get("msgDeleted"));var b=y.querySelectorAll(".geCommentAction");for(a=
+0;a<b.length;a++)b[a].parentNode.removeChild(b[a]);m(y);y.style.opacity="0.5"}else{b=B(c).replies;for(a=0;a<b.length;a++)z.removeChild(b[a]);for(a=0;a<d.length;a++)if(d[a]==c){d.splice(a,1);break}C.style.display=0==z.getElementsByTagName("div").length?"block":"none"}},function(b){p(y);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||t(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function b(){var b=
a.target;b.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(b,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=c.isResolved?"none":"",e=B(c).replies,f="dark"==uiTheme?"transparent":c.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"),k=0;k<l.length;k++)l[k]!=b.parentNode&&(l[k].style.display=d);G||(e[g].style.display="none")}q()}c.isResolved?A(mxResources.get("reOpened")+": ",!0,b,!1,
!0):A(mxResources.get("markedAsResolved"),!1,b,!0)});y.appendChild(D);null!=f?z.insertBefore(y,f.nextSibling):z.appendChild(y);for(f=0;null!=c.replies&&f<c.replies.length;f++)D=c.replies[f],D.isResolved=c.isResolved,n(D,c.replies,null,l+1,k);null!=x&&(x.comment.id==c.id?(k=c.content,c.content=x.comment.content,b(c,y,x.saveCallback,x.deleteOnCancel),c.content=k):null==x.comment.id&&x.comment.pCommentId==c.id&&(z.appendChild(x.div),b(x.comment,x.div,x.saveCallback,x.deleteOnCancel)));return y}}var v=
-!a.canComment(),t=a.canReplyToReplies(),x=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var E=EditorUi.compactUi?"26px":"30px",z=document.createElement("div");z.className="geCommentsList";z.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;z.style.bottom=parseInt(E)+7+"px";y.appendChild(z);var C=document.createElement("span");C.style.cssText="display:none;padding-top:10px;text-align:center;";
+!a.canComment(),u=a.canReplyToReplies(),x=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var E=EditorUi.compactUi?"26px":"30px",z=document.createElement("div");z.className="geCommentsList";z.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;z.style.bottom=parseInt(E)+7+"px";y.appendChild(z);var C=document.createElement("span");C.style.cssText="display:none;padding-top:10px;text-align:center;";
mxUtils.write(C,mxResources.get("noCommentsFound"));var A=document.createElement("div");A.className="geToolbarContainer geCommentsToolbar";A.style.height=E;A.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";A.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(A.style.filter="none");E=document.createElement("a");E.className="geButton";mxClient.IS_QUIRKS&&(E.style.filter="none");if(!v){var D=E.cloneNode();D.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';
D.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(D,"click",function(c){function d(){b(e,f,function(b){g(f);a.addComment(b,function(a){b.id=a;F.push(b);m(f)},function(b){p(f);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var e=a.newComment("",a.getCurrentUser()),f=n(e,F,null,0);d();c.preventDefault();mxEvent.consume(c)});A.appendChild(D)}D=E.cloneNode();D.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';
D.setAttribute("title",mxResources.get("showResolved"));var G=!1;"dark"==uiTheme&&(D.style.filter="invert(100%)");mxEvent.addListener(D,"click",function(a){this.className=(G=!G)?"geButton geCheckedBtn":"geButton";I();a.preventDefault();mxEvent.consume(a)});A.appendChild(D);a.commentsRefreshNeeded()&&(D=E.cloneNode(),D.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',D.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(D.style.filter="invert(100%)"),
mxEvent.addListener(D,"click",function(a){I();a.preventDefault();mxEvent.consume(a)}),A.appendChild(D));a.commentsSaveNeeded()&&(E=E.cloneNode(),E.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',E.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&(E.style.filter="invert(100%)"),mxEvent.addListener(E,"click",function(a){l();a.preventDefault();mxEvent.consume(a)}),A.appendChild(E));y.appendChild(A);var F=[],I=mxUtils.bind(this,function(){this.hasError=
-!1;if(null!=x)try{x.div=x.div.cloneNode(!0);var c=x.div.querySelector(".geCommentEditTxtArea"),d=x.div.querySelector(".geCommentEditBtns");x.comment.content=c.value;c.parentNode.removeChild(c);d.parentNode.removeChild(d)}catch(B){a.handleError(B)}z.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";t=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function c(a){if(null!=
+!1;if(null!=x)try{x.div=x.div.cloneNode(!0);var c=x.div.querySelector(".geCommentEditTxtArea"),d=x.div.querySelector(".geCommentEditBtns");x.comment.content=c.value;c.parentNode.removeChild(c);d.parentNode.removeChild(d)}catch(B){a.handleError(B)}z.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";u=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function c(a){if(null!=
a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var b=0;b<a.length;b++)c(a[b].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});z.innerHTML="";z.appendChild(C);C.style.display="block";F=a;for(a=0;a<F.length;a++)c(F[a].replies),n(F[a],F,null,0,G);null!=x&&null==x.comment.id&&null==x.comment.pCommentId&&(z.appendChild(x.div),b(x.comment,x.div,x.saveCallback,x.deleteOnCancel))},mxUtils.bind(this,function(a){z.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+
(a&&a.message?": "+a.message:""));this.hasError=!0})):z.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});I();this.refreshComments=I;A=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(e(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}if(this.window.isVisible()){for(var b=z.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var f=b[d];c[f.getAttribute("data-commentId")]=f}for(d=0;d<F.length;d++)a(F[d])}});setInterval(A,6E4);this.refreshCommentsTime=
A;this.window=new mxWindow(mxResources.get("comments"),y,c,f,d,k,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,
(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var J=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",J);this.destroy=function(){mxEvent.removeListener(window,"resize",J);this.window.destroy()}},ConfirmDialog=
function(a,c,f,d,k,l,q,b,e,g,p){var m=document.createElement("div");m.style.textAlign="center";p=null!=p?p:44;var n=document.createElement("div");n.style.padding="6px";n.style.overflow="auto";n.style.maxHeight=p+"px";n.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(n.style.height="60px");mxUtils.write(n,c);m.appendChild(n);null!=g&&(n=document.createElement("div"),n.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",g),n.appendChild(c),m.appendChild(n));g=document.createElement("div");
-g.style.textAlign="center";g.style.whiteSpace="nowrap";var v=document.createElement("input");v.setAttribute("type","checkbox");l=mxUtils.button(l||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(v.checked)});l.className="geBtn";null!=b&&(l.innerHTML=b+"<br>"+l.innerHTML,l.style.paddingBottom="8px",l.style.paddingTop="8px",l.style.height="auto",l.style.width="40%");a.editor.cancelFirst&&g.appendChild(l);var t=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=f&&
-f(v.checked)});g.appendChild(t);null!=q?(t.innerHTML=q+"<br>"+t.innerHTML+"<br>",t.style.paddingBottom="8px",t.style.paddingTop="8px",t.style.height="auto",t.className="geBtn",t.style.width="40%"):t.className="geBtn gePrimaryBtn";a.editor.cancelFirst||g.appendChild(l);m.appendChild(g);e?(g.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.appendChild(v),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),n.appendChild(k),m.appendChild(n),
-mxEvent.addListener(k,"click",function(a){v.checked=!v.checked;mxEvent.consume(a)})):g.style.marginTop="12px";this.init=function(){t.focus()};this.container=m};function DiagramPage(a,c){this.node=a;null!=c?this.node.setAttribute("id",c):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
+g.style.textAlign="center";g.style.whiteSpace="nowrap";var v=document.createElement("input");v.setAttribute("type","checkbox");l=mxUtils.button(l||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(v.checked)});l.className="geBtn";null!=b&&(l.innerHTML=b+"<br>"+l.innerHTML,l.style.paddingBottom="8px",l.style.paddingTop="8px",l.style.height="auto",l.style.width="40%");a.editor.cancelFirst&&g.appendChild(l);var u=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=f&&
+f(v.checked)});g.appendChild(u);null!=q?(u.innerHTML=q+"<br>"+u.innerHTML+"<br>",u.style.paddingBottom="8px",u.style.paddingTop="8px",u.style.height="auto",u.className="geBtn",u.style.width="40%"):u.className="geBtn gePrimaryBtn";a.editor.cancelFirst||g.appendChild(l);m.appendChild(g);e?(g.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.appendChild(v),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),n.appendChild(k),m.appendChild(n),
+mxEvent.addListener(k,"click",function(a){v.checked=!v.checked;mxEvent.consume(a)})):g.style.marginTop="12px";this.init=function(){u.focus()};this.container=m};function DiagramPage(a,c){this.node=a;null!=c?this.node.setAttribute("id",c):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};function RenamePage(a,c,f){this.ui=a;this.page=c;this.previous=this.name=f}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(a,c,f){this.ui=a;this.oldIndex=c;this.newIndex=f}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(a,c,f){this.ui=a;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=f&&(c.viewState=f,this.neverShown=!1))}
@@ -3699,41 +3703,41 @@ b=new EmbedDialog(this,this.getLinkForPage(a,c));this.showDialog(b.container,440
(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,k){k.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(k.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(c,
a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,k));return k};a.beforeDecode=function(a,c,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(c.getAttribute("relatedPage"));if(null==k.relatedPage){var d=c.ownerDocument.createElement("diagram");d.setAttribute("id",c.getAttribute("relatedPage"));d.setAttribute("name",c.getAttribute("name"));k.relatedPage=new DiagramPage(d);d=c.getAttribute("viewState");null!=d&&(k.relatedPage.viewState=JSON.parse(d),c.removeAttribute("viewState"));
c=c.cloneNode(!0);d=c.firstChild;if(null!=d)for(k.relatedPage.root=a.decodeCell(d,!1),k=d.nextSibling,d.parentNode.removeChild(d),d=k;null!=d;){k=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=k}}return c};a.afterDecode=function(a,c,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var a=Graph.prototype.foldCells;Graph.prototype.foldCells=function(c,f,l,q,b){f=null!=f?f:!1;null==l&&(l=this.getFoldableCells(this.getSelectionCells(),c));this.stopEditing();this.model.beginUpdate();try{for(var d=l.slice(),g=[],k=0;k<l.length;k++){var m=this.getCurrentCellStyle(l[k]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(l[k],!0,mxUtils.bind(this,function(a,b){null!=b&&g.push(b);a!=l[k]&&g.push(a);return a==
-l[k]||!this.model.isCollapsed(a)})),this.model.setCollapsed(l[k],c))}for(k=0;k<g.length;k++)this.model.setVisible(g[k],!c);l=d;l=a.apply(this,arguments)}finally{this.model.endUpdate()}return l};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return x.isVertex(a)&&f(a)}function c(a){var b=!1;null!=a&&(b="1"==t.getCurrentCellStyle(a).treeMoving);
-return b}function f(a){var b=!1;null!=a&&(a=x.getParent(a),b=t.view.getState(a),b="tree"==(null!=b?b.style:t.getCellStyle(a)).containerType);return b}function q(a){var b=!1;null!=a&&(a=x.getParent(a),b=t.view.getState(a),t.view.getState(a),b=null!=(null!=b?b.style:t.getCellStyle(a)).childLayout);return b}function b(a){a=t.view.getState(a);if(null!=a){var b=t.getIncomingEdges(a.cell);if(0<b.length&&(b=t.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
-a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function e(a,c){c=null!=c?c:!0;t.model.beginUpdate();try{var d=t.model.getParent(a),e=t.getIncomingEdges(a),f=t.cloneCells([e[0],a]);t.model.setTerminal(f[0],t.model.getTerminal(e[0],!0),!0);var g=b(a),l=d.geometry;g==mxConstants.DIRECTION_SOUTH||
-g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=c?a.geometry.width+10:-f[1].geometry.width-10:f[1].geometry.y+=c?a.geometry.height+10:-f[1].geometry.height-10;t.view.currentRoot!=d&&(f[1].geometry.x-=l.x,f[1].geometry.y-=l.y);var k=t.view.getState(a),m=t.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(c?a.geometry.width+10:-f[1].geometry.width-10)*m:n.y+=(c?a.geometry.height+10:-f[1].geometry.height-10)*m;var p=t.getOutgoingEdges(t.model.getTerminal(e[0],
-!0));if(null!=p){for(var q=g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH,u=l=e=0;u<p.length;u++){var x=t.model.getTerminal(p[u],!1);if(g==b(x)){var A=t.view.getState(x);x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,A)&&(e=10+Math.max(e,(Math.min(n.x+n.width,A.x+A.width)-Math.max(n.x,A.x))/m),l=10+Math.max(l,(Math.min(n.y+n.height,A.y+A.height)-Math.max(n.y,A.y))/m))}}q?l=0:e=0;for(u=0;u<p.length;u++)if(x=t.model.getTerminal(p[u],
-!1),g==b(x)&&(A=t.view.getState(x),x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY()))){var v=[];t.traverse(A.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});t.moveCells(v,(c?1:-1)*e,(c?1:-1)*l)}}}return t.addCells(f,d)}finally{t.model.endUpdate()}}function g(a){t.model.beginUpdate();try{var c=b(a),d=t.getIncomingEdges(a),e=t.cloneCells([d[0],a]);t.model.setTerminal(d[0],e[1],!1);t.model.setTerminal(e[0],e[1],!0);t.model.setTerminal(e[0],a,!1);
-var f=t.model.getParent(a),g=f.geometry,l=[];t.view.currentRoot!=f&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);t.traverse(a,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});var k=a.geometry.width+40,m=a.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?k=0:c==mxConstants.DIRECTION_NORTH?(k=0,m=-m):c==mxConstants.DIRECTION_WEST?(k=-k,m=0):c==mxConstants.DIRECTION_EAST&&(m=0);t.moveCells(l,k,m);return t.addCells(e,f)}finally{t.model.endUpdate()}}function p(a,c){t.model.beginUpdate();try{var d=
-t.model.getParent(a),e=t.getIncomingEdges(a),f=b(a);0==e.length&&(e=[t.createEdge(d,null,"",null,null,t.createCurrentEdgeStyle())],f=c);var g=t.cloneCells([e[0],a]);t.model.setTerminal(g[0],a,!0);if(null==t.model.getTerminal(g[0],!1)){t.model.setTerminal(g[0],g[1],!1);var l=t.getCellStyle(g[1]).newEdgeStyle;if(null!=l)try{var k=JSON.parse(l),m;for(m in k)t.setCellStyles(m,k[m],[g[0]]),"edgeStyle"==m&&"elbowEdgeStyle"==k[m]&&t.setCellStyles("elbow",f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NOTH?
-"vertical":"horizontal",[g[0]])}catch(da){}}var e=t.getOutgoingEdges(a),n=d.geometry,l=[];t.view.currentRoot==d&&(n=new mxRectangle);for(k=0;k<e.length;k++){var p=t.model.getTerminal(e[k],!1);null!=p&&l.push(p)}var q=t.view.getBounds(l),u=t.view.translate,x=t.view.scale;f==mxConstants.DIRECTION_SOUTH?(g[1].geometry.x=null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-u.x-n.x+10,g[1].geometry.y+=g[1].geometry.height-n.y+40):f==mxConstants.DIRECTION_NORTH?(g[1].geometry.x=
-null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-u.x+-n.x+10,g[1].geometry.y-=g[1].geometry.height+n.y+40):(g[1].geometry.x=f==mxConstants.DIRECTION_WEST?g[1].geometry.x-(g[1].geometry.width+n.x+40):g[1].geometry.x+(g[1].geometry.width-n.x+40),g[1].geometry.y=null==q?a.geometry.y+(a.geometry.height-g[1].geometry.height)/2:(q.y+q.height)/x-u.y+-n.y+10);return t.addCells(g,d)}finally{t.model.endUpdate()}}function m(a,b,c){a=t.getOutgoingEdges(a);c=t.view.getState(c);var d=
-[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=t.view.getState(t.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function n(a,c){var d=b(a),e=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==e&&d!=c?v.actions.get("selectParent").funct():
-d==c?(e=t.getOutgoingEdges(a),null!=e&&0<e.length&&t.setSelectionCell(t.model.getTerminal(e[0],!1))):(d=t.getIncomingEdges(a),null!=d&&0<d.length&&(e=m(t.model.getTerminal(d[0],!0),e,a),d=t.view.getState(a),null!=d&&(d=mxUtils.indexOf(e,d),0<=d&&(d+=c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=e.length-1&&t.setSelectionCell(e[d].cell)))))}var v=this,t=v.editor.graph,x=t.getModel(),y=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){y.apply(this,arguments);
-if(1==t.getSelectionCount()){c=t.getSelectionCell();var e=t.getOutgoingEdges(c);b.addSeparator();0<e.length&&(a(t.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(t.getSelectionCell())&&(b.addSeparator(),0<t.getIncomingEdges(c).length&&this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getOutgoingEdges(a);
-if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=t.getOutgoingEdges(t.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",
-function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);null!=a&&0<a.length&&t.setSelectionCell(t.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),b=[];t.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});t.setSelectionCells(b)}},null,null,"Alt+Shift+D");var E=t.removeCells;t.removeCells=function(b,c){c=null!=
-c?c:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));c&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var d=[],e=0;e<b.length;e++){var g=b[e];x.isEdge(g)&&f(g)&&(d.push(g),g=x.getTerminal(g,!1));if(a(g)){var l=[];t.traverse(g,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});0<l.length&&(d=d.concat(l),g=t.getIncomingEdges(b[e]),b=b.concat(g))}else null!=g&&d.push(b[e])}b=d;return E.apply(this,arguments)};v.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,
-d))};var z=t.duplicateCells;t.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=t.view.getState(d[e]);if(null!=f&&a(f.cell))for(var g=t.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var l=z.call(this,b,c);if(l.length==b.length)for(e=0;e<b.length;e++)if(a(b[e])){var k=t.getIncomingEdges(l[e]),g=t.getIncomingEdges(b[e]);if(0==k.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,
-t.getDefaultParent(),this.model.getTerminal(g[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var C=t.moveCells;t.moveCells=function(b,c,d,e,f,g,l){var k=null;this.model.beginUpdate();try{var m=f,n=this.getCurrentCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var p=0;p<b.length;p++)if(a(b[p])||t.model.isEdge(b[p])&&null==t.model.getTerminal(b[p],!0)){f=t.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var q=t.getIncomingEdges(b[0]);
-if(0<q.length){var u=t.view.getState(t.model.getTerminal(q[0],!0));if(null!=u){var x=t.view.getState(m);null!=x&&(c=(x.getCenterX()-u.getCenterX())/t.view.scale,d=(x.getCenterY()-u.getCenterY())/t.view.scale)}}}}k=C.apply(this,arguments);if(null!=k&&null!=b&&k.length==b.length)for(p=0;p<k.length;p++)if(this.model.isEdge(k[p]))a(m)&&0>mxUtils.indexOf(k,this.model.getTerminal(k[p],!0))&&this.model.setTerminal(k[p],m,!0);else if(a(b[p])&&(q=t.getIncomingEdges(b[p]),0<q.length))if(!e)a(m)&&0>mxUtils.indexOf(b,
-this.model.getTerminal(q[0],!0))&&this.model.setTerminal(q[0],m,!0);else if(0==t.getIncomingEdges(k[p]).length){n=m;if(null==n||n==t.model.getParent(b[p]))n=t.model.getTerminal(q[0],!0);e=this.cloneCell(q[0]);this.addEdge(e,t.getDefaultParent(),n,k[p])}}finally{this.model.endUpdate()}return k};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(b,c,d,e){var f=t.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var l=0;l<g.length;l++)if(f.isEdge(g[l])&&
-null==f.getTerminal(g[l],!0)){f.setTerminal(g[l],b,!0);var k=t.getCellGeometry(g[l]);k.points=null;null!=k.getTerminalPoint(!0)&&k.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var D={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},G=v.onKeyDown;v.onKeyDown=function(b){try{if(t.isEnabled()&&!t.isEditing()&&a(t.getSelectionCell())&&1==t.getSelectionCount()){var c=null;0<t.getIncomingEdges(t.getSelectionCell()).length&&
-(9==b.which?c=mxEvent.isShiftDown(b)?g(t.getSelectionCell()):p(t.getSelectionCell()):13==b.which&&(c=e(t.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&t.model.isEdge(c[0])?t.setSelectionCell(t.model.getTerminal(c[0],!1)):t.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var d=D[b.keyCode];
-null!=d&&(d.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(n(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(n(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(b)):39==b.keyCode?(n(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(n(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(b))}}catch(H){v.handleError(H)}mxEvent.isConsumed(b)||G.apply(this,arguments)};var F=t.connectVertex;t.connectVertex=
-function(c,d,f,l,k,m,n){var q=t.getIncomingEdges(c);if(a(c)){var u=b(c),x=u==mxConstants.DIRECTION_EAST||u==mxConstants.DIRECTION_WEST,A=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return u==d||0==q.length?p(c,d):x==A?g(c):e(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return F.apply(this,arguments)};t.getSubtree=function(b){var d=[b];!c(b)&&!a(b)||q(b)||t.traverse(b,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);
+l[k]||!this.model.isCollapsed(a)})),this.model.setCollapsed(l[k],c))}for(k=0;k<g.length;k++)this.model.setVisible(g[k],!c);l=d;l=a.apply(this,arguments)}finally{this.model.endUpdate()}return l};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return x.isVertex(a)&&f(a)}function c(a){var b=!1;null!=a&&(b="1"==u.getCurrentCellStyle(a).treeMoving);
+return b}function f(a){var b=!1;null!=a&&(a=x.getParent(a),b=u.view.getState(a),b="tree"==(null!=b?b.style:u.getCellStyle(a)).containerType);return b}function q(a){var b=!1;null!=a&&(a=x.getParent(a),b=u.view.getState(a),u.view.getState(a),b=null!=(null!=b?b.style:u.getCellStyle(a)).childLayout);return b}function b(a){a=u.view.getState(a);if(null!=a){var b=u.getIncomingEdges(a.cell);if(0<b.length&&(b=u.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
+a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function e(a,c){c=null!=c?c:!0;u.model.beginUpdate();try{var d=u.model.getParent(a),e=u.getIncomingEdges(a),f=u.cloneCells([e[0],a]);u.model.setTerminal(f[0],u.model.getTerminal(e[0],!0),!0);var g=b(a),l=d.geometry;g==mxConstants.DIRECTION_SOUTH||
+g==mxConstants.DIRECTION_NORTH?f[1].geometry.x+=c?a.geometry.width+10:-f[1].geometry.width-10:f[1].geometry.y+=c?a.geometry.height+10:-f[1].geometry.height-10;u.view.currentRoot!=d&&(f[1].geometry.x-=l.x,f[1].geometry.y-=l.y);var k=u.view.getState(a),m=u.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH?n.x+=(c?a.geometry.width+10:-f[1].geometry.width-10)*m:n.y+=(c?a.geometry.height+10:-f[1].geometry.height-10)*m;var p=u.getOutgoingEdges(u.model.getTerminal(e[0],
+!0));if(null!=p){for(var q=g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NORTH,t=l=e=0;t<p.length;t++){var x=u.model.getTerminal(p[t],!1);if(g==b(x)){var A=u.view.getState(x);x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,A)&&(e=10+Math.max(e,(Math.min(n.x+n.width,A.x+A.width)-Math.max(n.x,A.x))/m),l=10+Math.max(l,(Math.min(n.y+n.height,A.y+A.height)-Math.max(n.y,A.y))/m))}}q?l=0:e=0;for(t=0;t<p.length;t++)if(x=u.model.getTerminal(p[t],
+!1),g==b(x)&&(A=u.view.getState(x),x!=a&&null!=A&&(q&&c!=A.getCenterX()<k.getCenterX()||!q&&c!=A.getCenterY()<k.getCenterY()))){var B=[];u.traverse(A.cell,!0,function(a,b){null!=b&&B.push(b);B.push(a);return!0});u.moveCells(B,(c?1:-1)*e,(c?1:-1)*l)}}}return u.addCells(f,d)}finally{u.model.endUpdate()}}function g(a){u.model.beginUpdate();try{var c=b(a),d=u.getIncomingEdges(a),e=u.cloneCells([d[0],a]);u.model.setTerminal(d[0],e[1],!1);u.model.setTerminal(e[0],e[1],!0);u.model.setTerminal(e[0],a,!1);
+var f=u.model.getParent(a),g=f.geometry,l=[];u.view.currentRoot!=f&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);u.traverse(a,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});var k=a.geometry.width+40,m=a.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?k=0:c==mxConstants.DIRECTION_NORTH?(k=0,m=-m):c==mxConstants.DIRECTION_WEST?(k=-k,m=0):c==mxConstants.DIRECTION_EAST&&(m=0);u.moveCells(l,k,m);return u.addCells(e,f)}finally{u.model.endUpdate()}}function p(a,c){u.model.beginUpdate();try{var d=
+u.model.getParent(a),e=u.getIncomingEdges(a),f=b(a);0==e.length&&(e=[u.createEdge(d,null,"",null,null,u.createCurrentEdgeStyle())],f=c);var g=u.cloneCells([e[0],a]);u.model.setTerminal(g[0],a,!0);if(null==u.model.getTerminal(g[0],!1)){u.model.setTerminal(g[0],g[1],!1);var l=u.getCellStyle(g[1]).newEdgeStyle;if(null!=l)try{var k=JSON.parse(l),m;for(m in k)u.setCellStyles(m,k[m],[g[0]]),"edgeStyle"==m&&"elbowEdgeStyle"==k[m]&&u.setCellStyles("elbow",f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NOTH?
+"vertical":"horizontal",[g[0]])}catch(da){}}var e=u.getOutgoingEdges(a),n=d.geometry,l=[];u.view.currentRoot==d&&(n=new mxRectangle);for(k=0;k<e.length;k++){var p=u.model.getTerminal(e[k],!1);null!=p&&l.push(p)}var q=u.view.getBounds(l),t=u.view.translate,x=u.view.scale;f==mxConstants.DIRECTION_SOUTH?(g[1].geometry.x=null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-t.x-n.x+10,g[1].geometry.y+=g[1].geometry.height-n.y+40):f==mxConstants.DIRECTION_NORTH?(g[1].geometry.x=
+null==q?a.geometry.x+(a.geometry.width-g[1].geometry.width)/2:(q.x+q.width)/x-t.x+-n.x+10,g[1].geometry.y-=g[1].geometry.height+n.y+40):(g[1].geometry.x=f==mxConstants.DIRECTION_WEST?g[1].geometry.x-(g[1].geometry.width+n.x+40):g[1].geometry.x+(g[1].geometry.width-n.x+40),g[1].geometry.y=null==q?a.geometry.y+(a.geometry.height-g[1].geometry.height)/2:(q.y+q.height)/x-t.y+-n.y+10);return u.addCells(g,d)}finally{u.model.endUpdate()}}function m(a,b,c){a=u.getOutgoingEdges(a);c=u.view.getState(c);var d=
+[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=u.view.getState(u.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function n(a,c){var d=b(a),e=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==e&&d!=c?v.actions.get("selectParent").funct():
+d==c?(e=u.getOutgoingEdges(a),null!=e&&0<e.length&&u.setSelectionCell(u.model.getTerminal(e[0],!1))):(d=u.getIncomingEdges(a),null!=d&&0<d.length&&(e=m(u.model.getTerminal(d[0],!0),e,a),d=u.view.getState(a),null!=d&&(d=mxUtils.indexOf(e,d),0<=d&&(d+=c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=e.length-1&&u.setSelectionCell(e[d].cell)))))}var v=this,u=v.editor.graph,x=u.getModel(),y=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){y.apply(this,arguments);
+if(1==u.getSelectionCount()){c=u.getSelectionCell();var e=u.getOutgoingEdges(c);b.addSeparator();0<e.length&&(a(u.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(u.getSelectionCell())&&(b.addSeparator(),0<u.getIncomingEdges(c).length&&this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getOutgoingEdges(a);
+if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(u.model.getTerminal(a[c],!1));u.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=u.getOutgoingEdges(u.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(u.model.getTerminal(a[c],!1));u.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",
+function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),a=u.getIncomingEdges(a);null!=a&&0<a.length&&u.setSelectionCell(u.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var a=u.getSelectionCell(),b=[];u.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});u.setSelectionCells(b)}},null,null,"Alt+Shift+D");var E=u.removeCells;u.removeCells=function(b,c){c=null!=
+c?c:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));c&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var d=[],e=0;e<b.length;e++){var g=b[e];x.isEdge(g)&&f(g)&&(d.push(g),g=x.getTerminal(g,!1));if(a(g)){var l=[];u.traverse(g,!0,function(a,b){null!=b&&l.push(b);l.push(a);return!0});0<l.length&&(d=d.concat(l),g=u.getIncomingEdges(b[e]),b=b.concat(g))}else null!=g&&d.push(b[e])}b=d;return E.apply(this,arguments)};v.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,
+d))};var z=u.duplicateCells;u.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=u.view.getState(d[e]);if(null!=f&&a(f.cell))for(var g=u.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var l=z.call(this,b,c);if(l.length==b.length)for(e=0;e<b.length;e++)if(a(b[e])){var k=u.getIncomingEdges(l[e]),g=u.getIncomingEdges(b[e]);if(0==k.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,
+u.getDefaultParent(),this.model.getTerminal(g[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var C=u.moveCells;u.moveCells=function(b,c,d,e,f,g,l){var k=null;this.model.beginUpdate();try{var m=f,n=this.getCurrentCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var p=0;p<b.length;p++)if(a(b[p])||u.model.isEdge(b[p])&&null==u.model.getTerminal(b[p],!0)){f=u.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var q=u.getIncomingEdges(b[0]);
+if(0<q.length){var t=u.view.getState(u.model.getTerminal(q[0],!0));if(null!=t){var x=u.view.getState(m);null!=x&&(c=(x.getCenterX()-t.getCenterX())/u.view.scale,d=(x.getCenterY()-t.getCenterY())/u.view.scale)}}}}k=C.apply(this,arguments);if(null!=k&&null!=b&&k.length==b.length)for(p=0;p<k.length;p++)if(this.model.isEdge(k[p]))a(m)&&0>mxUtils.indexOf(k,this.model.getTerminal(k[p],!0))&&this.model.setTerminal(k[p],m,!0);else if(a(b[p])&&(q=u.getIncomingEdges(b[p]),0<q.length))if(!e)a(m)&&0>mxUtils.indexOf(b,
+this.model.getTerminal(q[0],!0))&&this.model.setTerminal(q[0],m,!0);else if(0==u.getIncomingEdges(k[p]).length){n=m;if(null==n||n==u.model.getParent(b[p]))n=u.model.getTerminal(q[0],!0);e=this.cloneCell(q[0]);this.addEdge(e,u.getDefaultParent(),n,k[p])}}finally{this.model.endUpdate()}return k};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(b,c,d,e){var f=u.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var l=0;l<g.length;l++)if(f.isEdge(g[l])&&
+null==f.getTerminal(g[l],!0)){f.setTerminal(g[l],b,!0);var k=u.getCellGeometry(g[l]);k.points=null;null!=k.getTerminalPoint(!0)&&k.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var D={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},G=v.onKeyDown;v.onKeyDown=function(b){try{if(u.isEnabled()&&!u.isEditing()&&a(u.getSelectionCell())&&1==u.getSelectionCount()){var c=null;0<u.getIncomingEdges(u.getSelectionCell()).length&&
+(9==b.which?c=mxEvent.isShiftDown(b)?g(u.getSelectionCell()):p(u.getSelectionCell()):13==b.which&&(c=e(u.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&u.model.isEdge(c[0])?u.setSelectionCell(u.model.getTerminal(c[0],!1)):u.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(u.view.getState(u.getSelectionCell())),u.startEditingAtCell(u.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var d=D[b.keyCode];
+null!=d&&(d.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(n(u.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(n(u.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(b)):39==b.keyCode?(n(u.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(n(u.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(b))}}catch(H){v.handleError(H)}mxEvent.isConsumed(b)||G.apply(this,arguments)};var F=u.connectVertex;u.connectVertex=
+function(c,d,f,l,k,m,n){var q=u.getIncomingEdges(c);if(a(c)){var t=b(c),x=t==mxConstants.DIRECTION_EAST||t==mxConstants.DIRECTION_WEST,A=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return t==d||0==q.length?p(c,d):x==A?g(c):e(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return F.apply(this,arguments)};u.getSubtree=function(b){var d=[b];!c(b)&&!a(b)||q(b)||u.traverse(b,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);
return!0});return d};var I=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){I.apply(this,arguments);(c(this.state.cell)||a(this.state.cell))&&!q(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",
this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(a)})))};var J=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=
-function(){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var u=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){u.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var K=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=
+function(){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var t=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){t.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var K=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=
function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var f=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=f.apply(this,arguments),c=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=
!0;var c=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.vertex=!0;var b=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');b.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
d.geometry.relative=!0;d.edge=!0;c.insertEdge(d,!0);b.insertEdge(d,!1);a.insert(d);a.insert(c);a.insert(b);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
c.vertex=!0;var b=new mxCell("Topic",new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');b.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;
c.insertEdge(d,!0);b.insertEdge(d,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');f.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
k.geometry.relative=!0;k.edge=!0;c.insertEdge(k,!0);f.insertEdge(k,!1);var m=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');m.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
-n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);m.insertEdge(n,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');v.vertex=!0;var t=new mxCell("",new mxGeometry(0,
-0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");t.geometry.relative=!0;t.edge=!0;c.insertEdge(t,!0);v.insertEdge(t,!1);a.insert(d);a.insert(k);a.insert(n);a.insert(t);a.insert(c);a.insert(b);a.insert(f);a.insert(m);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
+n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);m.insertEdge(n,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');v.vertex=!0;var u=new mxCell("",new mxGeometry(0,
+0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");u.geometry.relative=!0;u.edge=!0;c.insertEdge(u,!0);v.insertEdge(u,!1);a.insert(d);a.insert(k);a.insert(n);a.insert(u);a.insert(c);a.insert(b);a.insert(f);a.insert(m);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
a.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;a.insertEdge(c,!1);return sb.createVertexTemplateFromCells([a,c],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
a.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;a.insertEdge(c,!1);return sb.createVertexTemplateFromCells([a,c],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),'swimlane;html=1;startSize=20;horizontal=1;containerType=tree;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
@@ -3780,7 +3784,7 @@ b.menus.addMenuItems(a,["-","revisionHistory"],c)})));var e=this.get("exportAs")
b.menus.addSubmenu("theme",a,c);null!=f&&b.menus.addSubmenu("language",a,c);b.menus.addSubmenu("units",a,c);a.addSeparator(c);b.menus.addMenuItems(a,["scrollbars","tooltips","ruler"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&b.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],c);!b.isOfflineApp()&&isLocalStorage&&b.menus.addMenuItem(a,"plugins",c);a.addSeparator(c);b.menus.addMenuItem(a,"drawConfig",c);a.addSeparator(c)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,
function(a,c){b.menus.addMenuItems(a,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),c)})));mxUtils.bind(this,function(){var a=this.get("insert"),c=a.funct;a.funct=function(a,d){c.apply(this,arguments);b.menus.addSubmenu("table",a,d);a.addSeparator(d);b.menus.addMenuItems(a,["-","toggleShapes"],d)}})();var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),l=function(a,c,d,e){a.addItem(d,null,mxUtils.bind(this,
function(){var a=new CreateGraphDialog(b,d,e);b.showDialog(a.container,620,420,!0,!1);a.init()}),c)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):l(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,c){b.menus.addMenuItems(a,"grid guides ruler - connectionArrows connectionPoints -".split(" "),c);if("undefined"!==typeof MathJax){var d=b.menus.addMenuItem(a,"mathematicalTypesetting",
-c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],c)})))};var t=EditorUi.prototype.init;EditorUi.prototype.init=function(){function b(a,b,c){var d=k.menus.get(a),e=q.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),p);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";e.style.top="6px";e.style.marginRight="6px";e.style.height=
+c);b.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}b.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],c)})))};var u=EditorUi.prototype.init;EditorUi.prototype.init=function(){function b(a,b,c){var d=k.menus.get(a),e=q.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),p);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";e.style.top="6px";e.style.marginRight="6px";e.style.height=
"30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));k.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition="right 6px center",e.style.backgroundRepeat=
"no-repeat",e.style.paddingRight="22px");return e}function d(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=k.statusContainer?n.insertBefore(g,k.statusContainer):n.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition="center center",g.style.backgroundRepeat=
"no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor="pointer"):(g.setAttribute("disabled",
@@ -3794,16 +3798,16 @@ e([d("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.tra
640<=f?d("",a.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",a,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
null,640<=f?d("",c.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
null],60)}a=k.menus.get("language");null!=a&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==O&&(c=q.addMenu("",a.funct),c.setAttribute("title",mxResources.get("language")),c.className="geToolbarButton",c.style.backgroundImage="url("+Editor.globeImage+")",c.style.backgroundPosition="center center",c.style.backgroundRepeat="no-repeat",c.style.backgroundSize="24px 24px",c.style.position="absolute",c.style.height="24px",c.style.width="24px",c.style.zIndex="1",c.style.right="8px",c.style.cursor=
-"pointer",c.style.top="1"==urlParams.embed?"12px":"11px",n.appendChild(c),O=c),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}t.apply(this,arguments);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);(1E3<=f||null!=urlParams.clibs||
+"pointer",c.style.top="1"==urlParams.embed?"12px":"11px",n.appendChild(c),O=c),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}u.apply(this,arguments);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);(1E3<=f||null!=urlParams.clibs||
null!=urlParams.libs)&&c(this,!0);1E3<=f&&a(this,!0);var k=this,m=k.editor.graph;k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var n=document.createElement("div");n.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var p=null,q=new Menubar(k,n);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position=
"relative";k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop="7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var v=k.descriptorChanged;k.descriptorChanged=function(){v.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==
b?b="gitHub":"gitlab"==b?b="gitLab":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);n.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else n.removeAttribute("title")};k.setStatusText(k.editor.getStatus());n.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";n.appendChild(k.buttonContainer);k.menubarContainer=
-k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var l=k.diagramContainer.parentNode,u=document.createElement("div");u.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var K=
+k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var l=k.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var K=
k.menus.get("viewZoom");if(null!=K){this.tabContainer.style.right="70px";var B=q.addMenu("100%",K.funct);B.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");B.style.whiteSpace="nowrap";B.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";B.style.backgroundPosition="right 6px center";B.style.backgroundRepeat="no-repeat";B.style.backgroundColor="#ffffff";B.style.paddingRight="10px";B.style.display="block";B.style.position="absolute";B.style.textDecoration="none";B.style.textDecoration=
-"none";B.style.right="0px";B.style.bottom="0px";B.style.overflow="hidden";B.style.visibility="hidden";B.style.textAlign="center";B.style.color="#000";B.style.fontSize="12px";B.style.color="#707070";B.style.width="59px";B.style.cursor="pointer";B.style.borderTop="1px solid lightgray";B.style.borderLeft="1px solid lightgray";B.style.height=parseInt(k.tabContainerHeight)-1+"px";B.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";u.appendChild(B);K=mxUtils.bind(this,function(){B.innerHTML=Math.round(100*
-k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,K);k.editor.addListener("resetGraphView",K);k.editor.addListener("pageSelected",K);var L=k.setGraphEnabled;k.setGraphEnabled=function(){L.apply(this,arguments);null!=this.tabContainer&&(B.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}u.appendChild(k.tabContainer);u.appendChild(n);u.appendChild(k.diagramContainer);
-l.appendChild(u);k.updateTabContainer();var O=null;g();mxEvent.addListener(window,"resize",function(){g();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
-(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,c,f,d,k,l,q){this.file=a;this.id=c;this.content=f;this.modifiedDate=d;this.createdDate=k;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,f,d,k){c()};DrawioComment.prototype.editComment=function(a,c,f){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DrawioUser=function(a,c,f,d,k){this.id=a;this.email=c;this.displayName=f;this.pictureUrl=d;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished.\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully.\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed.\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first.\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list.\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+"none";B.style.right="0px";B.style.bottom="0px";B.style.overflow="hidden";B.style.visibility="hidden";B.style.textAlign="center";B.style.color="#000";B.style.fontSize="12px";B.style.color="#707070";B.style.width="59px";B.style.cursor="pointer";B.style.borderTop="1px solid lightgray";B.style.borderLeft="1px solid lightgray";B.style.height=parseInt(k.tabContainerHeight)-1+"px";B.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";t.appendChild(B);K=mxUtils.bind(this,function(){B.innerHTML=Math.round(100*
+k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,K);k.editor.addListener("resetGraphView",K);k.editor.addListener("pageSelected",K);var L=k.setGraphEnabled;k.setGraphEnabled=function(){L.apply(this,arguments);null!=this.tabContainer&&(B.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}t.appendChild(k.tabContainer);t.appendChild(n);t.appendChild(k.diagramContainer);
+l.appendChild(t);k.updateTabContainer();var O=null;g();mxEvent.addListener(window,"resize",function(){g();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,c,f,d,k,l,q){this.file=a;this.id=c;this.content=f;this.modifiedDate=d;this.createdDate=k;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,f,d,k){c()};DrawioComment.prototype.editComment=function(a,c,f){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DrawioUser=function(a,c,f,d,k){this.id=a;this.email=c;this.displayName=f;this.pictureUrl=d;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished.\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully.\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed.\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first.\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list.\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#2a2a2a"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,c,f){this.init(a,c,f)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://app.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.center=!1;
GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;
GraphViewer.prototype.init=function(a,c,f){this.graphConfig=null!=f?f:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.center=null!=this.graphConfig.center?this.graphConfig.center:this.center;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=
@@ -3835,13 +3839,13 @@ function(){e.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),e.style.cur
f.style.whiteSpace="nowrap";f.style.textAlign="left";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,k=null,l=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this,
function(){mxUtils.setOpacity(f,0);d=null;k=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";k=null}),100)}),a||200)}),q=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(q(30),l())}));mxEvent.addListener(f,mxClient.IS_POINTER?
"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){q(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){q(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var b=this.graph,e=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();
-this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<e&&Math.abs(this.scrollTop-b.container.scrollTop)<e&&Math.abs(this.startX-c.getGraphX())<e&&Math.abs(this.startY-c.getGraphY())<e&&(0<parseFloat(f.style.opacity||0)?l():q(30))}})}for(var g=this.toolbarItems,p=0,m=null,n=null,v=0;v<g.length;v++){var t=g[v];if("pages"==t){n=c.ownerDocument.createElement("div");
+this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<e&&Math.abs(this.scrollTop-b.container.scrollTop)<e&&Math.abs(this.startX-c.getGraphX())<e&&Math.abs(this.startY-c.getGraphY())<e&&(0<parseFloat(f.style.opacity||0)?l():q(30))}})}for(var g=this.toolbarItems,p=0,m=null,n=null,v=0;v<g.length;v++){var u=g[v];if("pages"==u){n=c.ownerDocument.createElement("div");
n.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(n,70);var x=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");x.style.borderRightStyle="none";x.style.paddingLeft="0px";x.style.paddingRight="0px";f.appendChild(n);var y=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
-1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");y.style.paddingLeft="0px";y.style.paddingRight="0px";t=mxUtils.bind(this,function(){n.innerHTML="";mxUtils.write(n,this.currentPage+1+" / "+this.diagrams.length);n.style.display=1<this.diagrams.length?"inline-block":"none";x.style.display=n.style.display;y.style.display=n.style.display});this.addListener("graphChanged",t);t()}else if("zoom"==t)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
-mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==t){if(this.layersEnabled){var E=this.graph.getModel(),z=a(mxUtils.bind(this,function(a){if(null!=m)m.parentNode.removeChild(m),
+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");y.style.paddingLeft="0px";y.style.paddingRight="0px";u=mxUtils.bind(this,function(){n.innerHTML="";mxUtils.write(n,this.currentPage+1+" / "+this.diagrams.length);n.style.display=1<this.diagrams.length?"inline-block":"none";x.style.display=n.style.display;y.style.display=n.style.display});this.addListener("graphChanged",u);u()}else if("zoom"==u)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
+mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==u){if(this.layersEnabled){var E=this.graph.getModel(),z=a(mxUtils.bind(this,function(a){if(null!=m)m.parentNode.removeChild(m),
m=null;else{m=this.graph.createLayersDialog();mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});a=z.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";m.style.fontSize="11px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var b=mxUtils.getDocumentScrollOrigin(document);m.style.left=b.x+a.left+
-"px";m.style.top=b.y+a.bottom+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");E.addListener(mxEvent.CHANGE,function(){z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"});z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"}}else"lightbox"==t?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(t=this.graphConfig["toolbar-buttons"][t],
-null!=t&&a(null==t.enabled||t.enabled?t.handler:function(){},t.image,t.title,t.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*p);null!=this.graphConfig.title&&(g=c.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,
+"px";m.style.top=b.y+a.bottom+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");E.addListener(mxEvent.CHANGE,function(){z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"});z.style.display=1<E.getChildCount(E.root)?"inline-block":"none"}}else"lightbox"==u?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(u=this.graphConfig["toolbar-buttons"][u],
+null!=u&&a(null==u.enabled||u.enabled?u.handler:function(){},u.image,u.title,u.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*p);null!=this.graphConfig.title&&(g=c.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,
70),f.appendChild(g),this.filename=g);this.minToolbarWidth=34*p;var C=c.style.border,g=mxUtils.bind(this,function(){f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";f.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=c.getBoundingClientRect(),b=mxUtils.getScrollOrigin(document.body),b="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-b.x,top:-b.y},a={left:a.left-
b.left,top:a.top-b.top,bottom:a.bottom-b.top,right:a.right-b.left};f.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==C&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){null!=f.parentNode&&f.parentNode.removeChild(f);null!=m&&(m.parentNode.removeChild(m),
m=null);c.style.border=C});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==c||a==f||a==m)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else f.style.top=-this.toolbarHeight+"px",c.appendChild(f)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",g):g()};
diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt
index 8cab00a3..30091ea4 100644
--- a/src/main/webapp/resources/dia.txt
+++ b/src/main/webapp/resources/dia.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt
index 0ef157a4..cb01c9e7 100644
--- a/src/main/webapp/resources/dia_am.txt
+++ b/src/main/webapp/resources/dia_am.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt
index cf9ed844..6bfaa840 100644
--- a/src/main/webapp/resources/dia_ar.txt
+++ b/src/main/webapp/resources/dia_ar.txt
@@ -672,6 +672,7 @@ shape=‫شكل‬
shapes=‫الأشكال‬
share=‫انشر‬
shareLink=‫رابط للتحرير المنشور‬
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=‫حاد‬
show=‫إظهار‬
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt
index 061744bb..e35937f5 100644
--- a/src/main/webapp/resources/dia_bg.txt
+++ b/src/main/webapp/resources/dia_bg.txt
@@ -672,6 +672,7 @@ shape=Форма
shapes=Форми
share=Споделяне
shareLink=Линк за споделено редактиране
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Остро
show=Показване
showStartScreen=Показване на началния екран
diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt
index 16540d52..ea9028a1 100644
--- a/src/main/webapp/resources/dia_bn.txt
+++ b/src/main/webapp/resources/dia_bn.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt
index 1a3c983f..07a908df 100644
--- a/src/main/webapp/resources/dia_bs.txt
+++ b/src/main/webapp/resources/dia_bs.txt
@@ -672,6 +672,7 @@ shape=Oblik
shapes=Oblici
share=Podijeli
shareLink=Link podijeljen za uređivanje
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Oštro
show=Pokaži
showStartScreen=Pokaži početni ekran
diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt
index 653677f3..6be8823e 100644
--- a/src/main/webapp/resources/dia_ca.txt
+++ b/src/main/webapp/resources/dia_ca.txt
@@ -672,6 +672,7 @@ shape=Forma
shapes=Formes
share=Comparteix
shareLink=Enllaç per a l'edició compartida
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Angulós
show=Mostra
showStartScreen=Mostra la pantalla d'inici
diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt
index 3e285b52..75af8fc4 100644
--- a/src/main/webapp/resources/dia_cs.txt
+++ b/src/main/webapp/resources/dia_cs.txt
@@ -672,6 +672,7 @@ shape=Tvar
shapes=Tvary
share=Sdílet
shareLink=Odkaz pro sdílenou editaci
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Ostrý
show=Zobrazit
showStartScreen=Zobrazit úvodní obrazovku
diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt
index d0844826..aab893c1 100644
--- a/src/main/webapp/resources/dia_da.txt
+++ b/src/main/webapp/resources/dia_da.txt
@@ -672,6 +672,7 @@ shape=Figur
shapes=Figurer
share=Del
shareLink=Link til fælles redigering
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Skarp
show=Vis
showStartScreen=Vis Startskærm
diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt
index 63a04746..f7900348 100644
--- a/src/main/webapp/resources/dia_de.txt
+++ b/src/main/webapp/resources/dia_de.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Freigeben
shareLink=Verknüpfung zum gemeinsamen Bearbeiten
+sharingAvailable=Freigabe nur für Google Drive und OneDrive Dateien.
sharp=Eckig
show=Anzeigen
showStartScreen=Startbildschirm anzeigen
diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt
index 51a24ca3..90537e15 100644
--- a/src/main/webapp/resources/dia_el.txt
+++ b/src/main/webapp/resources/dia_el.txt
@@ -672,6 +672,7 @@ shape=Σχήμα
shapes=Σχήματα
share=Κοινοποίηση
shareLink=Σύνδεσμός για κοινή επεξεργασία
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Αιχμή
show=Προβολή
showStartScreen=Εμφάνιση Οθόνης Έναρξης
diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt
index 0debff9e..95b690f6 100644
--- a/src/main/webapp/resources/dia_eo.txt
+++ b/src/main/webapp/resources/dia_eo.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt
index e905fb0f..c3499702 100644
--- a/src/main/webapp/resources/dia_es.txt
+++ b/src/main/webapp/resources/dia_es.txt
@@ -672,6 +672,7 @@ shape=Forma
shapes=Formas
share=Compartir
shareLink=Enlace para edición compartida.
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Filoso
show=Mostrar
showStartScreen=Mostrar pantalla de inicio
diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt
index 5c83d5cb..d2eab463 100644
--- a/src/main/webapp/resources/dia_et.txt
+++ b/src/main/webapp/resources/dia_et.txt
@@ -672,6 +672,7 @@ shape=Kujund
shapes=Kujundid
share=Jaga
shareLink=Link jagatud toimetamiseks
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Terav
show=Näita
showStartScreen=Näita algusekraani
diff --git a/src/main/webapp/resources/dia_eu.txt b/src/main/webapp/resources/dia_eu.txt
index 50ca0750..1fc6717d 100644
--- a/src/main/webapp/resources/dia_eu.txt
+++ b/src/main/webapp/resources/dia_eu.txt
@@ -672,6 +672,7 @@ shape=Forma
shapes=Formak
share=Partekatu
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Zorrotza
show=Erakutsi
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt
index 65968118..01845bef 100644
--- a/src/main/webapp/resources/dia_fa.txt
+++ b/src/main/webapp/resources/dia_fa.txt
@@ -672,6 +672,7 @@ shape=‫شکل‬
shapes=‫اشکال‬
share=‫به اشتراک گذاشتن‬
shareLink=‫لینک برای ویرایش مشترک‬
+sharingAvailable=X
sharp=‫تیز‬
show=‫نشان دادن‬
showStartScreen=‫نشان دادن صفحه شروع‬
diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt
index a08b4c62..937b70ab 100644
--- a/src/main/webapp/resources/dia_fi.txt
+++ b/src/main/webapp/resources/dia_fi.txt
@@ -672,6 +672,7 @@ shape=Muoto
shapes=Muodot
share=Jaa
shareLink=Linkki jaettuun muokkaukseen
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Terävä
show=Näytä
showStartScreen=Näytä aloitusruutu
diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt
index 1794e19d..f58c9dc8 100644
--- a/src/main/webapp/resources/dia_fil.txt
+++ b/src/main/webapp/resources/dia_fil.txt
@@ -672,6 +672,7 @@ shape=Hugis
shapes=Mga hugis
share=Ibahagi
shareLink=Link para sa salu-salong pag-edit
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Matalas
show=Ipakita
showStartScreen=Ipakita ang Panimulang Tabing
diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt
index b5a4b653..4cfccecd 100644
--- a/src/main/webapp/resources/dia_fr.txt
+++ b/src/main/webapp/resources/dia_fr.txt
@@ -672,6 +672,7 @@ shape=Forme
shapes=Formes
share=Partager
shareLink=Lien pour l'édition partagée
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Dur
show=Afficher
showStartScreen=Montrer écran de démarrage
diff --git a/src/main/webapp/resources/dia_gl.txt b/src/main/webapp/resources/dia_gl.txt
index 3835e07f..c675aaa5 100644
--- a/src/main/webapp/resources/dia_gl.txt
+++ b/src/main/webapp/resources/dia_gl.txt
@@ -672,6 +672,7 @@ shape=Forma
shapes=Formas
share=Compartir
shareLink=Vencello para compartir edición
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Brusco
show=Amosar
showStartScreen=Amosar Pantalla de Inicio
diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt
index 691aa539..dc74fdeb 100644
--- a/src/main/webapp/resources/dia_gu.txt
+++ b/src/main/webapp/resources/dia_gu.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt
index 88d3a808..a19d81cc 100644
--- a/src/main/webapp/resources/dia_he.txt
+++ b/src/main/webapp/resources/dia_he.txt
@@ -672,6 +672,7 @@ shape=‫צורה‬
shapes=‫צורות‬
share=‫שתף‬
shareLink=‫קישור לעריכה משותפת‬
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=‫חד‬
show=‫הצג‬
showStartScreen=‫הצג מסך פתיחה‬
diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt
index 0258ea1c..7ee6cc4a 100644
--- a/src/main/webapp/resources/dia_hi.txt
+++ b/src/main/webapp/resources/dia_hi.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt
index 83e04f76..d36df0d0 100644
--- a/src/main/webapp/resources/dia_hr.txt
+++ b/src/main/webapp/resources/dia_hr.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt
index b293539f..82573dc2 100644
--- a/src/main/webapp/resources/dia_hu.txt
+++ b/src/main/webapp/resources/dia_hu.txt
@@ -672,6 +672,7 @@ shape=Alakzat
shapes=Alakzatok
share=Osztás
shareLink=Link osztása
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Éles
show=Mutat
showStartScreen=Indító képernyőt jelenít
diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt
index 5477b7a2..450f2a4b 100644
--- a/src/main/webapp/resources/dia_i18n.txt
+++ b/src/main/webapp/resources/dia_i18n.txt
@@ -672,6 +672,7 @@ shape=shape
shapes=shapes
share=share
shareLink=shareLink
+sharingAvailable=sharingAvailable
sharp=sharp
show=show
showStartScreen=showStartScreen
diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt
index a2bcc0d2..3b463489 100644
--- a/src/main/webapp/resources/dia_id.txt
+++ b/src/main/webapp/resources/dia_id.txt
@@ -672,6 +672,7 @@ shape=Bentuk
shapes=Bentuk
share=Bagikan
shareLink=Tautan untuk editan bersama
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Tajam
show=Tampilkan
showStartScreen=Tampilkan Layar Awal
diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt
index d6f9796a..a8d08df2 100644
--- a/src/main/webapp/resources/dia_it.txt
+++ b/src/main/webapp/resources/dia_it.txt
@@ -672,6 +672,7 @@ shape=Forma
shapes=Forme
share=Condividi
shareLink=Link per la modifica condivisa
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Nitidezza
show=Mostra
showStartScreen=Mostra la schermata d'inizio
diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt
index 4454151a..a2a49095 100644
--- a/src/main/webapp/resources/dia_ja.txt
+++ b/src/main/webapp/resources/dia_ja.txt
@@ -672,6 +672,7 @@ shape=図形
shapes=図形
share=共有
shareLink=共同編集リンク
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=シャープ
show=表示
showStartScreen=開始画面を表示します
diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt
index ce918a00..c451143e 100644
--- a/src/main/webapp/resources/dia_kn.txt
+++ b/src/main/webapp/resources/dia_kn.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt
index 9a7b65ba..53f7af99 100644
--- a/src/main/webapp/resources/dia_ko.txt
+++ b/src/main/webapp/resources/dia_ko.txt
@@ -672,6 +672,7 @@ shape=도형
shapes=도형
share=공유
shareLink=편집 공유 링크
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=곧은선
show=보이기
showStartScreen=시작 화면 보기
diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt
index 1882c345..01dd9075 100644
--- a/src/main/webapp/resources/dia_lt.txt
+++ b/src/main/webapp/resources/dia_lt.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt
index 6809bb8f..80135ebd 100644
--- a/src/main/webapp/resources/dia_lv.txt
+++ b/src/main/webapp/resources/dia_lv.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt
index 93c34aa3..2faabc96 100644
--- a/src/main/webapp/resources/dia_ml.txt
+++ b/src/main/webapp/resources/dia_ml.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt
index 802feeaa..c3dceb49 100644
--- a/src/main/webapp/resources/dia_mr.txt
+++ b/src/main/webapp/resources/dia_mr.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt
index 685dadff..cc2b4b9b 100644
--- a/src/main/webapp/resources/dia_ms.txt
+++ b/src/main/webapp/resources/dia_ms.txt
@@ -672,6 +672,7 @@ shape=Bentuk
shapes=Bentuk-bentuk
share=Kongsi
shareLink=Pautan untuk suntingan kongsian
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Tajam
show=Tunjuk
showStartScreen=Tunjuk Skrin Mula
diff --git a/src/main/webapp/resources/dia_my.txt b/src/main/webapp/resources/dia_my.txt
index 8cab00a3..30091ea4 100644
--- a/src/main/webapp/resources/dia_my.txt
+++ b/src/main/webapp/resources/dia_my.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt
index 8d801b40..afaa33b8 100644
--- a/src/main/webapp/resources/dia_nl.txt
+++ b/src/main/webapp/resources/dia_nl.txt
@@ -672,6 +672,7 @@ shape=Vorm
shapes=Vormen
share=Delen
shareLink=Link voor gedeeld bewerken
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Rechthoekig
show=Tonen
showStartScreen=Startscherm tonen
diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt
index 24d2d773..a8d9fca1 100644
--- a/src/main/webapp/resources/dia_no.txt
+++ b/src/main/webapp/resources/dia_no.txt
@@ -672,6 +672,7 @@ shape=Form
shapes=Figurer
share=Del
shareLink=Lenke til felles redigering
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Skarp
show=Vis
showStartScreen=Vis startvindu
diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt
index a943858b..9d6714eb 100644
--- a/src/main/webapp/resources/dia_pl.txt
+++ b/src/main/webapp/resources/dia_pl.txt
@@ -672,6 +672,7 @@ shape=Kształt
shapes=Kształty
share=Udostępnij
shareLink=Hiperłącze do umożliwienia edycji innym użytkownikom
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Ostry
show=Pokaż
showStartScreen=Pokaż ekran startowy
diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt
index 80dbcf79..72d90daf 100644
--- a/src/main/webapp/resources/dia_pt-br.txt
+++ b/src/main/webapp/resources/dia_pt-br.txt
@@ -672,6 +672,7 @@ shape=Formato
shapes=Formatos
share=Partilhar
shareLink=Link para edição partilhada
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Quadrado
show=Mostrar
showStartScreen=Mostrar Tela Inicial
diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt
index 2efe43c0..d3668e17 100644
--- a/src/main/webapp/resources/dia_pt.txt
+++ b/src/main/webapp/resources/dia_pt.txt
@@ -672,6 +672,7 @@ shape=Forma 
shapes=Formas
share=Partilhar
shareLink=Link para a edição partilhada
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Quadrado
show=Mostrar
showStartScreen=Mostrar Tela de Começo
diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt
index 5f3e5678..d9657e8f 100644
--- a/src/main/webapp/resources/dia_ro.txt
+++ b/src/main/webapp/resources/dia_ro.txt
@@ -672,6 +672,7 @@ shape=Formă
shapes=Forme
share=Distribuie
shareLink=Link pentru editare în comun
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Ascuţit
show=Arată
showStartScreen=Arată ecranul de pornire
diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt
index 27a68c42..d3a271d9 100644
--- a/src/main/webapp/resources/dia_ru.txt
+++ b/src/main/webapp/resources/dia_ru.txt
@@ -672,6 +672,7 @@ shape=Фигура
shapes=Фигуры
share=Общий доступ
shareLink=Ссылка для совместного редактирования
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Острые углы
show=Показать
showStartScreen=Показать начальный экран
diff --git a/src/main/webapp/resources/dia_si.txt b/src/main/webapp/resources/dia_si.txt
index 8cab00a3..30091ea4 100644
--- a/src/main/webapp/resources/dia_si.txt
+++ b/src/main/webapp/resources/dia_si.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt
index 730bcd42..16a7bd17 100644
--- a/src/main/webapp/resources/dia_sk.txt
+++ b/src/main/webapp/resources/dia_sk.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt
index d892b821..54c6b153 100644
--- a/src/main/webapp/resources/dia_sl.txt
+++ b/src/main/webapp/resources/dia_sl.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt
index dc92ba9d..338a25a1 100644
--- a/src/main/webapp/resources/dia_sr.txt
+++ b/src/main/webapp/resources/dia_sr.txt
@@ -672,6 +672,7 @@ shape=Oblik
shapes=Oblici
share=Podeli
shareLink=Podeli link
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Oštar
show=Prikaži
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt
index 07fa5a99..e18f9409 100644
--- a/src/main/webapp/resources/dia_sv.txt
+++ b/src/main/webapp/resources/dia_sv.txt
@@ -672,6 +672,7 @@ shape=Form
shapes=Former
share=Dela
shareLink=Länk för delad redigering
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Skarp
show=Visa
showStartScreen=Visa hemskärmen
diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt
index d0748e21..21621de9 100644
--- a/src/main/webapp/resources/dia_sw.txt
+++ b/src/main/webapp/resources/dia_sw.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt
index eed71451..53f7936a 100644
--- a/src/main/webapp/resources/dia_ta.txt
+++ b/src/main/webapp/resources/dia_ta.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt
index 21e50de6..4b1c0296 100644
--- a/src/main/webapp/resources/dia_te.txt
+++ b/src/main/webapp/resources/dia_te.txt
@@ -672,6 +672,7 @@ shape=Shape
shapes=Shapes
share=Share
shareLink=Link for shared editing
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Sharp
show=Show
showStartScreen=Show Start Screen
diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt
index 22695c34..873a458e 100644
--- a/src/main/webapp/resources/dia_th.txt
+++ b/src/main/webapp/resources/dia_th.txt
@@ -672,6 +672,7 @@ shape=รูปร่าง
shapes=รูปร่าง
share=แบ่งปัน
shareLink=เชื่อมต่อเพื่อการแก้ไขร่วมกัน
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=แหลม
show=แสดง
showStartScreen=แสดงหน้าจอเริ่มต้น
diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt
index 3602fd0a..869e301d 100644
--- a/src/main/webapp/resources/dia_tr.txt
+++ b/src/main/webapp/resources/dia_tr.txt
@@ -672,6 +672,7 @@ shape=Şekil
shapes=Şekiller
share=Paylaş
shareLink=Paylaşılan düzenleme linki
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Keskin
show=Göster
showStartScreen=Başlama ekranını göster
diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt
index e40898eb..4c651b31 100644
--- a/src/main/webapp/resources/dia_uk.txt
+++ b/src/main/webapp/resources/dia_uk.txt
@@ -672,6 +672,7 @@ shape=Форма
shapes=Форми
share=Поділитися
shareLink=Посилання для спільного редагування
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Різке
show=Показати
showStartScreen=Показати екран запуску
diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt
index 6ffd321e..0b4fb12f 100644
--- a/src/main/webapp/resources/dia_vi.txt
+++ b/src/main/webapp/resources/dia_vi.txt
@@ -672,6 +672,7 @@ shape=Hình
shapes=Hình
share=Chia sẻ
shareLink=Đường dẫn chỉnh sửa đã chia sẻ
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=Góc
show=Hiển thị
showStartScreen=Hiển thị Màn Hình Bắt Đầu
diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt
index 2f5e1582..aedf3356 100644
--- a/src/main/webapp/resources/dia_zh-tw.txt
+++ b/src/main/webapp/resources/dia_zh-tw.txt
@@ -672,6 +672,7 @@ shape=圖形
shapes=圖形
share=分享
shareLink=分享編輯連結
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=銳角
show=顯示
showStartScreen=顯示開始畫面
diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt
index 0b294f1d..d1244d2b 100644
--- a/src/main/webapp/resources/dia_zh.txt
+++ b/src/main/webapp/resources/dia_zh.txt
@@ -672,6 +672,7 @@ shape=形状
shapes=形状
share=共享
shareLink=共享编辑的链接
+sharingAvailable=Sharing available for Google Drive and OneDrive files.
sharp=锐利
show=显示
showStartScreen=显示开始画面
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index 1c3a8013..9ef03990 100644
--- a/src/main/webapp/service-worker.js
+++ b/src/main/webapp/service-worker.js
@@ -6,11 +6,11 @@ if (workbox)
workbox.precaching.precacheAndRoute([
{
"url": "js/app.min.js",
- "revision": "319cc654d54a8737befada3433cd2c78"
+ "revision": "a8fa137840b7ae79e23008940db6f095"
},
{
"url": "js/extensions.min.js",
- "revision": "7e985a8c8ea46163d24e15c0177203ed"
+ "revision": "99a5699e7051a810fdee45e0fd91be93"
},
{
"url": "js/stencils.min.js",
@@ -34,7 +34,7 @@ if (workbox)
},
{
"url": "styles/grapheditor.css",
- "revision": "6ca3b89237f1c6cb9cfcbd3032b43431"
+ "revision": "35b5b9d556faa375612c04addcd5819c"
},
{
"url": "styles/atlas.css",
@@ -62,231 +62,231 @@ if (workbox)
},
{
"url": "resources/dia.txt",
- "revision": "1ec12a0dd13b43b8d7f380cd1bf6b9ad"
+ "revision": "27d259545a1519fb23cbec0f7360c9ce"
},
{
"url": "resources/dia_cs.txt",
- "revision": "06c1109d996b1dad062b05c771a61920"
+ "revision": "5b06409cae80df1fb4db967a43198db8"
},
{
"url": "resources/dia_my.txt",
- "revision": "1ec12a0dd13b43b8d7f380cd1bf6b9ad"
+ "revision": "27d259545a1519fb23cbec0f7360c9ce"
},
{
"url": "resources/dia_am.txt",
- "revision": "1a122f299214bc6fc0cf300270f6d869"
+ "revision": "8e270ea2a00eec62ed3056d8b173a343"
},
{
"url": "resources/dia_ml.txt",
- "revision": "97631cb2737b0e746b7f8ecc8941c727"
+ "revision": "6c6f33d1dafa9ad1763f8a0e1c77d9ea"
},
{
"url": "resources/dia_uk.txt",
- "revision": "1a825bf39d1c36c2fa9b2ab48fd2e9e3"
+ "revision": "31f1c8f4b0f4c7f247e2e4575ed049a7"
},
{
"url": "resources/dia_bg.txt",
- "revision": "630a27fef0624423314d0926df57d5d4"
+ "revision": "205118129e8df0dc956285fcb6e13de7"
},
{
"url": "resources/dia_ca.txt",
- "revision": "fa1bf307f00d923528574ea211dd227a"
+ "revision": "35b6a1ad89db2335060404dc242678ca"
},
{
"url": "resources/dia_th.txt",
- "revision": "3ad389e87a0e85681d6d8e2202ff7908"
+ "revision": "2cd2be36fdf3465b7665ce13bc0322aa"
},
{
"url": "resources/dia_bs.txt",
- "revision": "3466869f2e29324c2b3bf55081826454"
+ "revision": "a2616c76f9c6249a4f78a53a1cfd8891"
},
{
"url": "resources/dia_id.txt",
- "revision": "25b23ac9f923266cd1182fe39923ad47"
+ "revision": "e6a5f79703ae2c8d0e4b23375c19975a"
},
{
"url": "resources/dia_sk.txt",
- "revision": "8e3c3fbfa22dc7ddb97965e8deed2c4a"
+ "revision": "5d687f54cd8ee2061387af6f4cfe4fcf"
},
{
"url": "resources/dia_ro.txt",
- "revision": "b80c03fd6a1057df2049c953ce75c8c1"
+ "revision": "a6697aaa230a97fd286a4f0aaa0727db"
},
{
"url": "resources/dia_gl.txt",
- "revision": "a742a45372dafe715d15132779e2b375"
+ "revision": "c88b2f76aeaa3138ade917bc399c98a8"
},
{
"url": "resources/dia_es.txt",
- "revision": "72bb27405fb620dbc9fff23cae9ab785"
+ "revision": "15ab7e88a09d87498a4b6d048353eb34"
},
{
"url": "resources/dia_eu.txt",
- "revision": "6b8bd23addfe2c3d39e09bf378d83074"
+ "revision": "ba5bb8c3bd6a492e3b45b69e9a4cf6bd"
},
{
"url": "resources/dia_ko.txt",
- "revision": "0128304941e2bacfc3a1c5e13647de5d"
+ "revision": "da301eab521972967e51a5453fde6cb5"
},
{
"url": "resources/dia_si.txt",
- "revision": "1ec12a0dd13b43b8d7f380cd1bf6b9ad"
+ "revision": "27d259545a1519fb23cbec0f7360c9ce"
},
{
"url": "resources/dia_kn.txt",
- "revision": "06cfad9581f1e9dacd9eb5b9e8a927ba"
+ "revision": "f1cc8799dbfe7883329b037a632aa96e"
},
{
"url": "resources/dia_hu.txt",
- "revision": "4da4e966274427f93c1ffa0fbb62a131"
+ "revision": "0366546206854c2f3b53fbc2c1da106b"
},
{
"url": "resources/dia_fi.txt",
- "revision": "6d3b18a576cb038a0bb7f6d8b2203d1c"
+ "revision": "736f51f7280ec763d7d8f69a2e2caf72"
},
{
"url": "resources/dia_da.txt",
- "revision": "31e166718131d82495b1fcbea5eaa13d"
+ "revision": "5ef39ca0106a36a0c3fe2039aa78d8bd"
},
{
"url": "resources/dia_de.txt",
- "revision": "c758942c6cf34797186db837c73f62fc"
+ "revision": "944822c5ff72d5fdcda8954ba7da66e2"
},
{
"url": "resources/dia_sl.txt",
- "revision": "a0ba7ed84175d151fb1aed287cfc688d"
+ "revision": "69599e42b93790a257b3b108cc5afc6c"
},
{
"url": "resources/dia_it.txt",
- "revision": "5eb7f89a1f2d470c54af6a631df49e4a"
+ "revision": "8921764a2b7fad5602adc21e64a5ac2c"
},
{
"url": "resources/dia_hr.txt",
- "revision": "7d098875272b5ebc2f8cc34429ad2d8a"
+ "revision": "7a245f1d5410c0aec61dd838a1fbac30"
},
{
"url": "resources/dia_he.txt",
- "revision": "8d42d60f44ceae0e2c98e7db877e0b0e"
+ "revision": "89dfe0393507de57306bc533b09a7162"
},
{
"url": "resources/dia_pt.txt",
- "revision": "481877838da3c834ea62a666b9cb60a7"
+ "revision": "6592ba85798cc4e975d84939eaf2892f"
},
{
"url": "resources/dia_zh-tw.txt",
- "revision": "2ebb56adc00cf11923807fbcef5ecf66"
+ "revision": "d2539f7b1fbd103087202bd3123d897e"
},
{
"url": "resources/dia_et.txt",
- "revision": "86aeccdd67fe3c30e6648c0f11b3ac34"
+ "revision": "e7bb4f0421d8e5c243ecdbf84a2164de"
},
{
"url": "resources/dia_ja.txt",
- "revision": "e3b2828c0c6907655d8a7456a11dec84"
+ "revision": "290c8c8cf18bbade8db53b61a5b2f621"
},
{
"url": "resources/dia_hi.txt",
- "revision": "3923df3b657d8b0c57e2748d95dd1570"
+ "revision": "b775a5584628174079d451e431399eb3"
},
{
"url": "resources/dia_eo.txt",
- "revision": "fade58d52b126e3a8b40e7a004f9db80"
+ "revision": "8b6ce98e046bd84c5bdd760567e8d122"
},
{
"url": "resources/dia_fa.txt",
- "revision": "6ccdc8b9382d820ff4e3a1f94344f4b8"
+ "revision": "dbf6176fc59f0f80725d8ca386d4bd7c"
},
{
"url": "resources/dia_sw.txt",
- "revision": "da1651246e84f1a54c0b83611a9a73ec"
+ "revision": "a433ab4b602e23136d8307ed0ae08aea"
},
{
"url": "resources/dia_pl.txt",
- "revision": "c803cb9d37d0a40e7805a51af61f3d53"
+ "revision": "193eb613e1cab6b1f9e64ff65a85e6d7"
},
{
"url": "resources/dia_pt-br.txt",
- "revision": "578125b9508f38fdb7b9123c5d7b325f"
+ "revision": "0309a91a9f59afa320b5e7cd00e321ab"
},
{
"url": "resources/dia_sv.txt",
- "revision": "e6d546be7ad01b4874771a6a9bcf6999"
+ "revision": "e42b8f7023416170ecb52ca4690925f1"
},
{
"url": "resources/dia_el.txt",
- "revision": "dca71bd35edd43717e61c5f86bc5738f"
+ "revision": "05c8cae5b44a635d63bbd802fce54461"
},
{
"url": "resources/dia_sr.txt",
- "revision": "460007c43fded3f0d7fe175d3df8f26b"
+ "revision": "219552d03be1a6852f09d5194795034c"
},
{
"url": "resources/dia_fr.txt",
- "revision": "e0fe5b4a4cfd300747e2458c1eac57a6"
+ "revision": "5ab266f4cfadfefd0961ad38cd9cfbd9"
},
{
"url": "resources/dia_ru.txt",
- "revision": "a2f77277acb7a9abca0be8cfcb6e78b5"
+ "revision": "9ef9ef97ff682cd1be8e7f7532f54b1c"
},
{
"url": "resources/dia_gu.txt",
- "revision": "a56c935f2e0f4465456c587abde38612"
+ "revision": "bff8275e7576dbad9cec254aaa984dda"
},
{
"url": "resources/dia_ar.txt",
- "revision": "b754b0206f8c0ef01730e417f0fa4490"
+ "revision": "17819885a1e96766a80d7ea95fe92402"
},
{
"url": "resources/dia_tr.txt",
- "revision": "9669902495e40a08e814a76a5b43e55f"
+ "revision": "4465c048e1310af4e0bd07fc96144590"
},
{
"url": "resources/dia_te.txt",
- "revision": "4e858034bc8bc1ce2025f988d614bf6e"
+ "revision": "358f9f49641432b8b08a9865b098b765"
},
{
"url": "resources/dia_lt.txt",
- "revision": "3bc2f077588dda41cbd59c4177af6524"
+ "revision": "b521e91ade6f51790cc522703097c93c"
},
{
"url": "resources/dia_lv.txt",
- "revision": "9cc27e78ab552a3923ace242b08cc5f8"
+ "revision": "0692d5056e41a364defe7a9e874667ab"
},
{
"url": "resources/dia_mr.txt",
- "revision": "ad00ca68e1fdb634a86a2eff13c02cce"
+ "revision": "74f5f13d5328ad08891f287a216b2b25"
},
{
"url": "resources/dia_ms.txt",
- "revision": "9836aa97e4f4ca206eb0b244496cb44b"
+ "revision": "d1d4a4304760f021d14ae78d4c63c7ba"
},
{
"url": "resources/dia_nl.txt",
- "revision": "92fa763a7fd00e53042b6a25935108c6"
+ "revision": "1eafabf4cc207df9d56d263f107db94c"
},
{
"url": "resources/dia_fil.txt",
- "revision": "29d5ab8f9f37afc217dbe2667d11ba52"
+ "revision": "0b519f89bea709a535a4b324ab2d4d0e"
},
{
"url": "resources/dia_zh.txt",
- "revision": "bceb1463e5553ba0a9fc41b46e5766e2"
+ "revision": "52cdaffa00947dc3d6fef9f3469cc532"
},
{
"url": "resources/dia_bn.txt",
- "revision": "26a8dbbd11d8ef8340f333701816957b"
+ "revision": "e9ac087d108743305398c1161eb81549"
},
{
"url": "resources/dia_no.txt",
- "revision": "8bfea6e400b8dea4801baa9a5a7fcc02"
+ "revision": "7ed3af9c4b4024168069dedc96c4c26b"
},
{
"url": "resources/dia_vi.txt",
- "revision": "c1de0ba62ec390bc459c267e5ee73b07"
+ "revision": "928311f19eaf8a634720389e4e2ff489"
},
{
"url": "resources/dia_ta.txt",
- "revision": "0e4e12b9042c9ba41a69897e9771c691"
+ "revision": "022f9360053e669c9d1d03b87a84a5a7"
},
{
"url": "favicon.ico",
diff --git a/src/main/webapp/styles/grapheditor.css b/src/main/webapp/styles/grapheditor.css
index 33cbf325..136f96d9 100644
--- a/src/main/webapp/styles/grapheditor.css
+++ b/src/main/webapp/styles/grapheditor.css
@@ -93,9 +93,19 @@
color:#a94442 !important;
border-radius:3px;
}
-.geStatusAlert:hover {
- background-color:#f1d8d8;
- border-color:#d6b2b8;
+.geStatusAlertOrange {
+ white-space:nowrap;
+ margin-top:-5px;
+ font-size:12px;
+ padding:4px 6px 4px 6px;
+ background-color:rgb(242, 147, 30);
+ border:rgb(240, 135, 5);
+ color:#000000 !important;
+ border-radius:3px;
+ opacity:0.8;
+}
+.geStatusAlertOrange:hover {
+ opacity:1;
}
.geStatusMessage {
white-space:nowrap;
diff --git a/src/main/webapp/vsdxImporter.html b/src/main/webapp/vsdxImporter.html
new file mode 100644
index 00000000..68a9590d
--- /dev/null
+++ b/src/main/webapp/vsdxImporter.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>VSDX Importer</title>
+<script type="text/javascript" src="js/app.min.js"></script>
+<script type="text/javascript" src="js/extensions.min.js"></script>
+<script type="text/javascript">
+ const { ipcRenderer } = require('electron');
+
+ ipcRenderer.on('import', (event, vsdxBuff) =>
+ {
+ EditorUi.prototype.createUi = function(){};
+ EditorUi.prototype.addTrees = function(){};
+ EditorUi.prototype.updateActionStates = function(){};
+ var editorUi = new EditorUi();
+ var blob = new Blob([vsdxBuff], {type: 'application/octet-stream'});
+
+ editorUi.importVisio(blob, function(xml)
+ {
+ ipcRenderer.send('import-success', xml);
+ },
+ function()
+ {
+ ipcRenderer.send('import-error');
+ });
+ });
+</script>
+</head>
+<body>
+</body>
+</html> \ No newline at end of file