luoyifan 2 anos atrás
pai
commit
8c30915165
100 arquivos alterados com 51209 adições e 0 exclusões
  1. 151 0
      assets/mxgraph-editor/deflate/base64.js
  2. 1 0
      assets/mxgraph-editor/deflate/pako.min.js
  3. BIN
      assets/mxgraph-editor/images/checkmark.gif
  4. BIN
      assets/mxgraph-editor/images/clear.gif
  5. BIN
      assets/mxgraph-editor/images/close.png
  6. BIN
      assets/mxgraph-editor/images/collapsed.gif
  7. BIN
      assets/mxgraph-editor/images/dropdown.gif
  8. BIN
      assets/mxgraph-editor/images/dropdown.png
  9. BIN
      assets/mxgraph-editor/images/edit.gif
  10. BIN
      assets/mxgraph-editor/images/expanded.gif
  11. BIN
      assets/mxgraph-editor/images/grid.gif
  12. BIN
      assets/mxgraph-editor/images/handle-fixed.png
  13. BIN
      assets/mxgraph-editor/images/handle-main.png
  14. BIN
      assets/mxgraph-editor/images/handle-rotate.png
  15. BIN
      assets/mxgraph-editor/images/handle-secondary.png
  16. BIN
      assets/mxgraph-editor/images/handle-terminal.png
  17. BIN
      assets/mxgraph-editor/images/help.png
  18. BIN
      assets/mxgraph-editor/images/locked.png
  19. BIN
      assets/mxgraph-editor/images/logo.png
  20. BIN
      assets/mxgraph-editor/images/move.png
  21. BIN
      assets/mxgraph-editor/images/nocolor.png
  22. BIN
      assets/mxgraph-editor/images/refresh.png
  23. BIN
      assets/mxgraph-editor/images/round-drop.png
  24. BIN
      assets/mxgraph-editor/images/search.png
  25. BIN
      assets/mxgraph-editor/images/transparent.gif
  26. BIN
      assets/mxgraph-editor/images/triangle-down.png
  27. BIN
      assets/mxgraph-editor/images/triangle-left.png
  28. BIN
      assets/mxgraph-editor/images/triangle-right.png
  29. BIN
      assets/mxgraph-editor/images/triangle-up.png
  30. BIN
      assets/mxgraph-editor/images/unlocked.png
  31. 110 0
      assets/mxgraph-editor/index.html
  32. 1597 0
      assets/mxgraph-editor/js/Actions.js
  33. 2558 0
      assets/mxgraph-editor/js/Dialogs.js
  34. 2778 0
      assets/mxgraph-editor/js/Editor.js
  35. 5084 0
      assets/mxgraph-editor/js/EditorUi.js
  36. 6636 0
      assets/mxgraph-editor/js/Format.js
  37. 11941 0
      assets/mxgraph-editor/js/Graph.js
  38. 29 0
      assets/mxgraph-editor/js/Init.js
  39. 1462 0
      assets/mxgraph-editor/js/Menus.js
  40. 5310 0
      assets/mxgraph-editor/js/Shapes.js
  41. 4419 0
      assets/mxgraph-editor/js/Sidebar.js
  42. 1106 0
      assets/mxgraph-editor/js/Toolbar.js
  43. BIN
      assets/mxgraph-editor/jscolor/arrow.gif
  44. BIN
      assets/mxgraph-editor/jscolor/cross.gif
  45. BIN
      assets/mxgraph-editor/jscolor/hs.png
  46. BIN
      assets/mxgraph-editor/jscolor/hv.png
  47. 912 0
      assets/mxgraph-editor/jscolor/jscolor.js
  48. 222 0
      assets/mxgraph-editor/open.html
  49. 325 0
      assets/mxgraph-editor/resources/grapheditor-bak.txt
  50. 325 0
      assets/mxgraph-editor/resources/grapheditor.txt
  51. 325 0
      assets/mxgraph-editor/resources/grapheditor_de.txt
  52. 323 0
      assets/mxgraph-editor/resources/grapheditor_se.txt
  53. 20 0
      assets/mxgraph-editor/resources/help.html
  54. 20 0
      assets/mxgraph-editor/resources/help_de.html
  55. 21 0
      assets/mxgraph-editor/resources/help_se.html
  56. 92 0
      assets/mxgraph-editor/sanitizer/sanitizer.min.js
  57. 849 0
      assets/mxgraph-editor/stencils/arrows.xml
  58. 895 0
      assets/mxgraph-editor/stencils/basic.xml
  59. 1162 0
      assets/mxgraph-editor/stencils/bpmn.xml
  60. BIN
      assets/mxgraph-editor/stencils/clipart/Credit_Card_128x128.png
  61. BIN
      assets/mxgraph-editor/stencils/clipart/Database_128x128.png
  62. BIN
      assets/mxgraph-editor/stencils/clipart/Doctor1_128x128.png
  63. BIN
      assets/mxgraph-editor/stencils/clipart/Earth_globe_128x128.png
  64. BIN
      assets/mxgraph-editor/stencils/clipart/Email_128x128.png
  65. BIN
      assets/mxgraph-editor/stencils/clipart/Empty_Folder_128x128.png
  66. BIN
      assets/mxgraph-editor/stencils/clipart/Firewall_02_128x128.png
  67. BIN
      assets/mxgraph-editor/stencils/clipart/Full_Folder_128x128.png
  68. BIN
      assets/mxgraph-editor/stencils/clipart/Gear_128x128.png
  69. BIN
      assets/mxgraph-editor/stencils/clipart/Graph_128x128.png
  70. BIN
      assets/mxgraph-editor/stencils/clipart/Laptop_128x128.png
  71. BIN
      assets/mxgraph-editor/stencils/clipart/Lock_128x128.png
  72. BIN
      assets/mxgraph-editor/stencils/clipart/MacBook_128x128.png
  73. BIN
      assets/mxgraph-editor/stencils/clipart/Monitor_Tower_128x128.png
  74. BIN
      assets/mxgraph-editor/stencils/clipart/Piggy_Bank_128x128.png
  75. BIN
      assets/mxgraph-editor/stencils/clipart/Pilot1_128x128.png
  76. BIN
      assets/mxgraph-editor/stencils/clipart/Printer_128x128.png
  77. BIN
      assets/mxgraph-editor/stencils/clipart/Router_Icon_128x128.png
  78. BIN
      assets/mxgraph-editor/stencils/clipart/Safe_128x128.png
  79. BIN
      assets/mxgraph-editor/stencils/clipart/Security1_128x128.png
  80. BIN
      assets/mxgraph-editor/stencils/clipart/Server_Tower_128x128.png
  81. BIN
      assets/mxgraph-editor/stencils/clipart/Shopping_Cart_128x128.png
  82. BIN
      assets/mxgraph-editor/stencils/clipart/Software_128x128.png
  83. BIN
      assets/mxgraph-editor/stencils/clipart/Soldier1_128x128.png
  84. BIN
      assets/mxgraph-editor/stencils/clipart/Suit1_128x128.png
  85. BIN
      assets/mxgraph-editor/stencils/clipart/Suit2_128x128.png
  86. BIN
      assets/mxgraph-editor/stencils/clipart/Suit3_128x128.png
  87. BIN
      assets/mxgraph-editor/stencils/clipart/Tech1_128x128.png
  88. BIN
      assets/mxgraph-editor/stencils/clipart/Telesales1_128x128.png
  89. BIN
      assets/mxgraph-editor/stencils/clipart/Virtual_Machine_128x128.png
  90. BIN
      assets/mxgraph-editor/stencils/clipart/Virus_128x128.png
  91. BIN
      assets/mxgraph-editor/stencils/clipart/Wireless_Router_N_128x128.png
  92. BIN
      assets/mxgraph-editor/stencils/clipart/Worker1_128x128.png
  93. BIN
      assets/mxgraph-editor/stencils/clipart/Workstation_128x128.png
  94. BIN
      assets/mxgraph-editor/stencils/clipart/iMac_128x128.png
  95. BIN
      assets/mxgraph-editor/stencils/clipart/iPad_128x128.png
  96. 920 0
      assets/mxgraph-editor/stencils/flowchart.xml
  97. 109 0
      assets/mxgraph-editor/styles/default.xml
  98. BIN
      assets/mxgraph-editor/styles/down.gif
  99. 1507 0
      assets/mxgraph-editor/styles/grapheditor.css
  100. 0 0
      assets/mxgraph-editor/styles/help.css

+ 151 - 0
assets/mxgraph-editor/deflate/base64.js

@@ -0,0 +1,151 @@
+
+/**
+*
+*  Base64 encode / decode
+*  http://www.webtoolkit.info/
+*
+**/
+
+var Base64 = {
+
+	// private property
+	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
+
+	// public method for encoding
+	encode : function (input, binary) {
+		binary = (binary != null) ? binary : false;
+		var output = "";
+		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+		var i = 0;
+
+		if (!binary)
+		{
+			input = Base64._utf8_encode(input);
+		}
+
+		while (i < input.length) {
+
+			chr1 = input.charCodeAt(i++);
+			chr2 = input.charCodeAt(i++);
+			chr3 = input.charCodeAt(i++);
+
+			enc1 = chr1 >> 2;
+			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+			enc4 = chr3 & 63;
+
+			if (isNaN(chr2)) {
+				enc3 = enc4 = 64;
+			} else if (isNaN(chr3)) {
+				enc4 = 64;
+			}
+
+			output = output +
+			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
+			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
+
+		}
+
+		return output;
+	},
+
+	// public method for decoding
+	decode : function (input, binary) {
+		binary = (binary != null) ? binary : false;
+		var output = "";
+		var chr1, chr2, chr3;
+		var enc1, enc2, enc3, enc4;
+		var i = 0;
+
+		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+		while (i < input.length) {
+
+			enc1 = this._keyStr.indexOf(input.charAt(i++));
+			enc2 = this._keyStr.indexOf(input.charAt(i++));
+			enc3 = this._keyStr.indexOf(input.charAt(i++));
+			enc4 = this._keyStr.indexOf(input.charAt(i++));
+
+			chr1 = (enc1 << 2) | (enc2 >> 4);
+			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+			chr3 = ((enc3 & 3) << 6) | enc4;
+
+			output = output + String.fromCharCode(chr1);
+
+			if (enc3 != 64) {
+				output = output + String.fromCharCode(chr2);
+			}
+			if (enc4 != 64) {
+				output = output + String.fromCharCode(chr3);
+			}
+
+		}
+
+		if (!binary)
+		{
+			output = Base64._utf8_decode(output);
+		}
+
+		return output;
+
+	},
+
+	// private method for UTF-8 encoding
+	_utf8_encode : function (string) {
+		string = string.replace(/\r\n/g,"\n");
+		var utftext = "";
+
+		for (var n = 0; n < string.length; n++) {
+
+			var c = string.charCodeAt(n);
+
+			if (c < 128) {
+				utftext += String.fromCharCode(c);
+			}
+			else if((c > 127) && (c < 2048)) {
+				utftext += String.fromCharCode((c >> 6) | 192);
+				utftext += String.fromCharCode((c & 63) | 128);
+			}
+			else {
+				utftext += String.fromCharCode((c >> 12) | 224);
+				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+				utftext += String.fromCharCode((c & 63) | 128);
+			}
+
+		}
+
+		return utftext;
+	},
+
+	// private method for UTF-8 decoding
+	_utf8_decode : function (utftext) {
+		var string = "";
+		var i = 0;
+		var c = c1 = c2 = 0;
+
+		while ( i < utftext.length ) {
+
+			c = utftext.charCodeAt(i);
+
+			if (c < 128) {
+				string += String.fromCharCode(c);
+				i++;
+			}
+			else if((c > 191) && (c < 224)) {
+				c2 = utftext.charCodeAt(i+1);
+				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+				i += 2;
+			}
+			else {
+				c2 = utftext.charCodeAt(i+1);
+				c3 = utftext.charCodeAt(i+2);
+				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+				i += 3;
+			}
+
+		}
+
+		return string;
+	}
+
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
assets/mxgraph-editor/deflate/pako.min.js


BIN
assets/mxgraph-editor/images/checkmark.gif


BIN
assets/mxgraph-editor/images/clear.gif


BIN
assets/mxgraph-editor/images/close.png


BIN
assets/mxgraph-editor/images/collapsed.gif


BIN
assets/mxgraph-editor/images/dropdown.gif


BIN
assets/mxgraph-editor/images/dropdown.png


BIN
assets/mxgraph-editor/images/edit.gif


BIN
assets/mxgraph-editor/images/expanded.gif


BIN
assets/mxgraph-editor/images/grid.gif


BIN
assets/mxgraph-editor/images/handle-fixed.png


BIN
assets/mxgraph-editor/images/handle-main.png


BIN
assets/mxgraph-editor/images/handle-rotate.png


BIN
assets/mxgraph-editor/images/handle-secondary.png


BIN
assets/mxgraph-editor/images/handle-terminal.png


BIN
assets/mxgraph-editor/images/help.png


BIN
assets/mxgraph-editor/images/locked.png


BIN
assets/mxgraph-editor/images/logo.png


BIN
assets/mxgraph-editor/images/move.png


BIN
assets/mxgraph-editor/images/nocolor.png


BIN
assets/mxgraph-editor/images/refresh.png


BIN
assets/mxgraph-editor/images/round-drop.png


BIN
assets/mxgraph-editor/images/search.png


BIN
assets/mxgraph-editor/images/transparent.gif


BIN
assets/mxgraph-editor/images/triangle-down.png


BIN
assets/mxgraph-editor/images/triangle-left.png


BIN
assets/mxgraph-editor/images/triangle-right.png


BIN
assets/mxgraph-editor/images/triangle-up.png


BIN
assets/mxgraph-editor/images/unlocked.png


+ 110 - 0
assets/mxgraph-editor/index.html

@@ -0,0 +1,110 @@
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Grapheditor</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+    <link rel="stylesheet" type="text/css" href="styles/grapheditor.css">
+	<script type="text/javascript">
+		// Parses URL parameters. Supported parameters are:
+		// - lang=xy: Specifies the language of the user interface.
+		// - touch=1: Enables a touch-style user interface.
+		// - storage=local: Enables HTML5 local storage.
+		// - chrome=0: Chromeless mode.
+		var urlParams = (function(url)
+		{
+			var result = new Object();
+			var idx = url.lastIndexOf('?');
+
+			if (idx > 0)
+			{
+				var params = url.substring(idx + 1).split('&');
+
+				for (var i = 0; i < params.length; i++)
+				{
+					idx = params[i].indexOf('=');
+
+					if (idx > 0)
+					{
+						result[params[i].substring(0, idx)] = params[i].substring(idx + 1);
+					}
+				}
+			}
+
+			return result;
+		})(window.location.href);
+
+		// Default resources are included in grapheditor resources
+		mxLoadResources = false;
+	</script>
+	<script type="text/javascript" src="js/Init.js"></script>
+	<script type="text/javascript" src="deflate/pako.min.js"></script>
+	<script type="text/javascript" src="deflate/base64.js"></script>
+	<script type="text/javascript" src="jscolor/jscolor.js"></script>
+	<script type="text/javascript" src="sanitizer/sanitizer.min.js"></script>
+	<script type="text/javascript" src="../mxgraph/mxClient.js"></script>
+	<script type="text/javascript" src="js/EditorUi.js"></script>
+	<script type="text/javascript" src="js/Editor.js"></script>
+	<script type="text/javascript" src="js/Sidebar.js"></script>
+	<script type="text/javascript" src="js/Graph.js"></script>
+	<script type="text/javascript" src="js/Format.js"></script>
+	<script type="text/javascript" src="js/Shapes.js"></script>
+	<script type="text/javascript" src="js/Actions.js"></script>
+	<script type="text/javascript" src="js/Menus.js"></script>
+	<script type="text/javascript" src="js/Toolbar.js"></script>
+	<script type="text/javascript" src="js/Dialogs.js"></script>
+</head>
+<body class="geEditor">
+	<script type="text/javascript">
+		// Extends EditorUi to update I/O action states based on availability of backend
+		(function()
+		{
+			var editorUiInit = EditorUi.prototype.init;
+
+			EditorUi.prototype.init = function()
+			{
+				editorUiInit.apply(this, arguments);
+				this.actions.get('export').setEnabled(false);
+
+				// Updates action states which require a backend
+				if (!Editor.useLocalStorage)
+				{
+					mxUtils.post(OPEN_URL, '', mxUtils.bind(this, function(req)
+					{
+						var enabled = req.getStatus() != 404;
+						this.actions.get('open').setEnabled(enabled || Graph.fileSupport);
+						this.actions.get('import').setEnabled(enabled || Graph.fileSupport);
+						this.actions.get('save').setEnabled(enabled);
+						this.actions.get('saveAs').setEnabled(enabled);
+						this.actions.get('export').setEnabled(enabled);
+					}));
+				}
+			};
+
+			// Adds required resources (disables loading of fallback properties, this can only
+			// be used if we know that all keys are defined in the language specific file)
+			mxResources.loadDefaultBundle = false;
+			var bundle = mxResources.getDefaultBundle(RESOURCE_BASE, mxLanguage) ||
+				mxResources.getSpecialBundle(RESOURCE_BASE, mxLanguage);
+
+			// Fixes possible asynchronous requests
+			mxUtils.getAll([bundle, STYLE_PATH + '/default.xml'], function(xhr)
+			{
+				// Adds bundle text to resources
+				mxResources.parse(xhr[0].getText());
+
+				// Configures the default graph theme
+				var themes = new Object();
+				themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
+
+				// Main
+				new EditorUi(new Editor(urlParams['chrome'] == '0', themes));
+			}, function()
+			{
+				document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
+			});
+		})();
+	</script>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1597 - 0
assets/mxgraph-editor/js/Actions.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 2558 - 0
assets/mxgraph-editor/js/Dialogs.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 2778 - 0
assets/mxgraph-editor/js/Editor.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 5084 - 0
assets/mxgraph-editor/js/EditorUi.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 6636 - 0
assets/mxgraph-editor/js/Format.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 11941 - 0
assets/mxgraph-editor/js/Graph.js


+ 29 - 0
assets/mxgraph-editor/js/Init.js

@@ -0,0 +1,29 @@
+// urlParams is null when used for embedding
+window.urlParams = window.urlParams || {};
+
+// Public global variables
+window.MAX_REQUEST_SIZE = window.MAX_REQUEST_SIZE  || 10485760;
+window.MAX_AREA = window.MAX_AREA || 15000 * 15000;
+
+// URLs for save and export
+window.EXPORT_URL = window.EXPORT_URL || '/export';
+window.SAVE_URL = window.SAVE_URL || '/save';
+window.OPEN_URL = window.OPEN_URL || '/open';
+window.RESOURCES_PATH = window.RESOURCES_PATH || 'resources';
+window.RESOURCE_BASE = window.RESOURCE_BASE || window.RESOURCES_PATH + '/grapheditor';
+window.STENCIL_PATH = window.STENCIL_PATH || 'stencils';
+window.IMAGE_PATH = window.IMAGE_PATH || 'images';
+window.STYLE_PATH = window.STYLE_PATH || 'styles';
+window.CSS_PATH = window.CSS_PATH || 'styles';
+window.OPEN_FORM = window.OPEN_FORM || 'open.html';
+
+// Sets the base path, the UI language via URL param and configures the
+// supported languages to avoid 404s. The loading of all core language
+// resources is disabled as all required resources are in grapheditor.
+// properties. Note that in this example the loading of two resource
+// files (the special bundle and the default bundle) is disabled to
+// save a GET request. This requires that all resources be present in
+// each properties file since only one file is loaded.
+window.mxBasePath = window.mxBasePath || '../../../src';
+window.mxLanguage = window.mxLanguage || urlParams['lang'];
+window.mxLanguages = window.mxLanguages || ['de', 'se'];

Diferenças do arquivo suprimidas por serem muito extensas
+ 1462 - 0
assets/mxgraph-editor/js/Menus.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 5310 - 0
assets/mxgraph-editor/js/Shapes.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 4419 - 0
assets/mxgraph-editor/js/Sidebar.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1106 - 0
assets/mxgraph-editor/js/Toolbar.js


BIN
assets/mxgraph-editor/jscolor/arrow.gif


BIN
assets/mxgraph-editor/jscolor/cross.gif


BIN
assets/mxgraph-editor/jscolor/hs.png


BIN
assets/mxgraph-editor/jscolor/hv.png


+ 912 - 0
assets/mxgraph-editor/jscolor/jscolor.js

@@ -0,0 +1,912 @@
+/**
+ * jscolor, JavaScript Color Picker
+ *
+ * @version 1.3.13
+ * @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
+ * @author  Jan Odvarko, http://odvarko.cz
+ * @created 2008-06-15
+ * @updated 2012-01-19
+ * @link    http://jscolor.com
+ */
+
+
+var mxJSColor = {
+
+	dir : '', // location of jscolor directory (leave empty to autodetect)
+	bindClass : 'color', // class name
+	binding : true, // automatic binding via <input class="...">
+	preloading : true, // use image preloading?
+
+
+	install : function() {
+		//mxJSColor.addEvent(window, 'load', mxJSColor.init);
+	},
+
+
+	init : function() {
+		if(mxJSColor.preloading) {
+			mxJSColor.preload();
+		}
+	},
+
+
+	getDir : function() {
+		if(!mxJSColor.dir) {
+			var detected = mxJSColor.detectDir();
+			mxJSColor.dir = detected!==false ? detected : 'jscolor/';
+		}
+		return mxJSColor.dir;
+	},
+
+
+	detectDir : function() {
+		var base = location.href;
+
+		var e = document.getElementsByTagName('base');
+		for(var i=0; i<e.length; i+=1) {
+			if(e[i].href) { base = e[i].href; }
+		}
+
+		var e = document.getElementsByTagName('script');
+		for(var i=0; i<e.length; i+=1) {
+			if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
+				var src = new mxJSColor.URI(e[i].src);
+				var srcAbs = src.toAbsolute(base);
+				srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
+				srcAbs.query = null;
+				srcAbs.fragment = null;
+				return srcAbs.toString();
+			}
+		}
+		return false;
+	},
+
+	preload : function() {
+		for(var fn in mxJSColor.imgRequire) {
+			if(mxJSColor.imgRequire.hasOwnProperty(fn)) {
+				mxJSColor.loadImage(fn);
+			}
+		}
+	},
+
+
+	images : {
+		pad : [ 181, 101 ],
+		sld : [ 16, 101 ],
+		cross : [ 15, 15 ],
+		arrow : [ 7, 11 ]
+	},
+
+
+	imgRequire : {},
+	imgLoaded : {},
+
+
+	requireImage : function(filename) {
+		mxJSColor.imgRequire[filename] = true;
+	},
+
+
+	loadImage : function(filename) {
+		if(!mxJSColor.imgLoaded[filename]) {
+			mxJSColor.imgLoaded[filename] = new Image();
+			mxJSColor.imgLoaded[filename].src = mxJSColor.getDir()+filename;
+		}
+	},
+
+
+	fetchElement : function(mixed) {
+		return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
+	},
+
+
+	addEvent : function(el, evnt, func) {
+		if(el.addEventListener) {
+			el.addEventListener(evnt, func, false);
+		} else if(el.attachEvent) {
+			el.attachEvent('on'+evnt, func);
+		}
+	},
+
+
+	fireEvent : function(el, evnt) {
+		if(!el) {
+			return;
+		}
+		if(document.createEvent) {
+			var ev = document.createEvent('HTMLEvents');
+			ev.initEvent(evnt, true, true);
+			el.dispatchEvent(ev);
+		} else if(document.createEventObject) {
+			var ev = document.createEventObject();
+			el.fireEvent('on'+evnt, ev);
+		} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
+			el['on'+evnt]();
+		}
+	},
+
+
+	getElementPos : function(e) {
+		var e1=e, e2=e;
+		var x=0, y=0;
+		if(e1.offsetParent) {
+			do {
+				x += e1.offsetLeft;
+				y += e1.offsetTop;
+			} while(e1 = e1.offsetParent);
+		}
+		while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
+			x -= e2.scrollLeft;
+			y -= e2.scrollTop;
+		}
+		return [x, y];
+	},
+
+
+	getElementSize : function(e) {
+		return [e.offsetWidth, e.offsetHeight];
+	},
+
+
+	getRelMousePos : function(e) {
+		var x = 0, y = 0;
+		if (!e) { e = window.event; }
+		if (typeof e.offsetX === 'number') {
+			x = e.offsetX;
+			y = e.offsetY;
+		} else if (typeof e.layerX === 'number') {
+			x = e.layerX;
+			y = e.layerY;
+		}
+		return { x: x, y: y };
+	},
+
+
+	getViewPos : function() {
+		if(typeof window.pageYOffset === 'number') {
+			return [window.pageXOffset, window.pageYOffset];
+		} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
+			return [document.body.scrollLeft, document.body.scrollTop];
+		} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
+			return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
+		} else {
+			return [0, 0];
+		}
+	},
+
+
+	getViewSize : function() {
+		if(typeof window.innerWidth === 'number') {
+			return [window.innerWidth, window.innerHeight];
+		} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
+			return [document.body.clientWidth, document.body.clientHeight];
+		} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+			return [document.documentElement.clientWidth, document.documentElement.clientHeight];
+		} else {
+			return [0, 0];
+		}
+	},
+
+
+	URI : function(uri) { // See RFC3986
+
+		this.scheme = null;
+		this.authority = null;
+		this.path = '';
+		this.query = null;
+		this.fragment = null;
+
+		this.parse = function(uri) {
+			var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
+			this.scheme = m[3] ? m[2] : null;
+			this.authority = m[5] ? m[6] : null;
+			this.path = m[7];
+			this.query = m[9] ? m[10] : null;
+			this.fragment = m[12] ? m[13] : null;
+			return this;
+		};
+
+		this.toString = function() {
+			var result = '';
+			if(this.scheme !== null) { result = result + this.scheme + ':'; }
+			if(this.authority !== null) { result = result + '//' + this.authority; }
+			if(this.path !== null) { result = result + this.path; }
+			if(this.query !== null) { result = result + '?' + this.query; }
+			if(this.fragment !== null) { result = result + '#' + this.fragment; }
+			return result;
+		};
+
+		this.toAbsolute = function(base) {
+			var base = new mxJSColor.URI(base);
+			var r = this;
+			var t = new mxJSColor.URI;
+
+			if(base.scheme === null) { return false; }
+
+			if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
+				r.scheme = null;
+			}
+
+			if(r.scheme !== null) {
+				t.scheme = r.scheme;
+				t.authority = r.authority;
+				t.path = removeDotSegments(r.path);
+				t.query = r.query;
+			} else {
+				if(r.authority !== null) {
+					t.authority = r.authority;
+					t.path = removeDotSegments(r.path);
+					t.query = r.query;
+				} else {
+					if(r.path === '') { // TODO: == or === ?
+						t.path = base.path;
+						if(r.query !== null) {
+							t.query = r.query;
+						} else {
+							t.query = base.query;
+						}
+					} else {
+						if(r.path.substr(0,1) === '/') {
+							t.path = removeDotSegments(r.path);
+						} else {
+							if(base.authority !== null && base.path === '') { // TODO: == or === ?
+								t.path = '/'+r.path;
+							} else {
+								t.path = base.path.replace(/[^\/]+$/,'')+r.path;
+							}
+							t.path = removeDotSegments(t.path);
+						}
+						t.query = r.query;
+					}
+					t.authority = base.authority;
+				}
+				t.scheme = base.scheme;
+			}
+			t.fragment = r.fragment;
+
+			return t;
+		};
+
+		function removeDotSegments(path) {
+			var out = '';
+			while(path) {
+				if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
+					path = path.replace(/^\.+/,'').substr(1);
+				} else if(path.substr(0,3)==='/./' || path==='/.') {
+					path = '/'+path.substr(3);
+				} else if(path.substr(0,4)==='/../' || path==='/..') {
+					path = '/'+path.substr(4);
+					out = out.replace(/\/?[^\/]*$/, '');
+				} else if(path==='.' || path==='..') {
+					path = '';
+				} else {
+					var rm = path.match(/^\/?[^\/]*/)[0];
+					path = path.substr(rm.length);
+					out = out + rm;
+				}
+			}
+			return out;
+		}
+
+		if(uri) {
+			this.parse(uri);
+		}
+
+	},
+
+
+	/*
+	 * Usage example:
+	 * var myColor = new mxJSColor.color(myInputElement)
+	 */
+
+	color : function(target, prop) {
+
+
+		this.required = true; // refuse empty values?
+		this.adjust = true; // adjust value to uniform notation?
+		this.hash = false; // prefix color with # symbol?
+		this.caps = true; // uppercase?
+		this.slider = true; // show the value/saturation slider?
+		this.valueElement = target; // value holder
+		this.styleElement = target; // where to reflect current color
+		this.onImmediateChange = null; // onchange callback (can be either string or function)
+		this.hsv = [0, 0, 1]; // read-only  0-6, 0-1, 0-1
+		this.rgb = [1, 1, 1]; // read-only  0-1, 0-1, 0-1
+
+		this.pickerOnfocus = true; // display picker on focus?
+		this.pickerMode = 'HSV'; // HSV | HVS
+		this.pickerPosition = 'bottom'; // left | right | top | bottom
+		this.pickerSmartPosition = true; // automatically adjust picker position when necessary
+		this.pickerButtonHeight = 20; // px
+		this.pickerClosable = false;
+		this.pickerCloseText = 'Close';
+		this.pickerButtonColor = 'ButtonText'; // px
+		this.pickerFace = 0; // px
+		this.pickerFaceColor = 'ThreeDFace'; // CSS color
+		this.pickerBorder = 1; // px
+		this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
+		this.pickerInset = 1; // px
+		this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
+		this.pickerZIndex = 10000;
+
+
+		for(var p in prop) {
+			if(prop.hasOwnProperty(p)) {
+				this[p] = prop[p];
+			}
+		}
+
+
+		this.hidePicker = function() {
+			if(isPickerOwner()) {
+				removePicker();
+			}
+		};
+
+
+		this.showPicker = function() {
+			if(!isPickerOwner()) {
+				var tp = mxJSColor.getElementPos(target); // target pos
+				var ts = mxJSColor.getElementSize(target); // target size
+				var vp = mxJSColor.getViewPos(); // view pos
+				var vs = mxJSColor.getViewSize(); // view size
+				var ps = getPickerDims(this); // picker size
+				var a, b, c;
+				switch(this.pickerPosition.toLowerCase()) {
+					case 'left': a=1; b=0; c=-1; break;
+					case 'right':a=1; b=0; c=1; break;
+					case 'top':  a=0; b=1; c=-1; break;
+					default:     a=0; b=1; c=1; break;
+				}
+				var l = (ts[b]+ps[b])/2;
+
+				// picker pos
+				if (!this.pickerSmartPosition) {
+					var pp = [
+						tp[a],
+						tp[b]+ts[b]-l+l*c
+					];
+				} else {
+					var pp = [
+						-vp[a]+tp[a]+ps[a] > vs[a] ?
+							(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
+							tp[a],
+						-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
+							(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
+							(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
+					];
+				}
+				drawPicker(0, 0);
+			}
+		};
+
+
+		this.importColor = function() {
+			if(!valueElement) {
+				this.exportColor();
+			} else {
+				if(!this.adjust) {
+					if(!this.fromString(valueElement.value, leaveValue)) {
+						styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
+						styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
+						styleElement.style.color = styleElement.jscStyle.color;
+						this.exportColor(leaveValue | leaveStyle);
+					}
+				} else if(!this.required && /^\s*$/.test(valueElement.value)) {
+					valueElement.value = '';
+					styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
+					styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
+					styleElement.style.color = styleElement.jscStyle.color;
+					this.exportColor(leaveValue | leaveStyle);
+
+				} else if(this.fromString(valueElement.value)) {
+					// OK
+				} else {
+					this.exportColor();
+				}
+			}
+		};
+
+
+		this.exportColor = function(flags) {
+			if(!(flags & leaveValue) && valueElement) {
+				var value = this.toString();
+				if(this.caps) { value = value.toUpperCase(); }
+				if(this.hash) { value = '#'+value; }
+				valueElement.value = value;
+			}
+			if(!(flags & leaveStyle) && styleElement) {
+				styleElement.style.backgroundImage = "none";
+				styleElement.style.backgroundColor =
+					'#'+this.toString();
+				styleElement.style.color =
+					0.213 * this.rgb[0] +
+					0.715 * this.rgb[1] +
+					0.072 * this.rgb[2]
+					< 0.5 ? '#FFF' : '#000';
+			}
+			if(!(flags & leavePad) && isPickerOwner()) {
+				redrawPad();
+			}
+			if(!(flags & leaveSld) && isPickerOwner()) {
+				redrawSld();
+			}
+		};
+
+
+		this.fromHSV = function(h, s, v, flags) { // null = don't change
+			h<0 && (h=0) || h>6 && (h=6);
+			s<0 && (s=0) || s>1 && (s=1);
+			v<0 && (v=0) || v>1 && (v=1);
+			this.rgb = HSV_RGB(
+				h===null ? this.hsv[0] : (this.hsv[0]=h),
+				s===null ? this.hsv[1] : (this.hsv[1]=s),
+				v===null ? this.hsv[2] : (this.hsv[2]=v)
+			);
+			this.exportColor(flags);
+		};
+
+
+		this.fromRGB = function(r, g, b, flags) { // null = don't change
+			r<0 && (r=0) || r>1 && (r=1);
+			g<0 && (g=0) || g>1 && (g=1);
+			b<0 && (b=0) || b>1 && (b=1);
+			var hsv = RGB_HSV(
+				r===null ? this.rgb[0] : (this.rgb[0]=r),
+				g===null ? this.rgb[1] : (this.rgb[1]=g),
+				b===null ? this.rgb[2] : (this.rgb[2]=b)
+			);
+			if(hsv[0] !== null) {
+				this.hsv[0] = hsv[0];
+			}
+			if(hsv[2] !== 0) {
+				this.hsv[1] = hsv[1];
+			}
+			this.hsv[2] = hsv[2];
+			this.exportColor(flags);
+		};
+
+
+		this.fromString = function(hex, flags) {
+			var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
+			if(!m) {
+				return false;
+			} else {
+				if(m[1].length === 6) { // 6-char notation
+					this.fromRGB(
+						parseInt(m[1].substr(0,2),16) / 255,
+						parseInt(m[1].substr(2,2),16) / 255,
+						parseInt(m[1].substr(4,2),16) / 255,
+						flags
+					);
+				} else { // 3-char notation
+					this.fromRGB(
+						parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
+						parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
+						parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
+						flags
+					);
+				}
+				return true;
+			}
+		};
+
+
+		this.toString = function() {
+			return (
+				(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
+				(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
+				(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
+			);
+		};
+
+
+		function RGB_HSV(r, g, b) {
+			var n = Math.min(Math.min(r,g),b);
+			var v = Math.max(Math.max(r,g),b);
+			var m = v - n;
+			if(m === 0) { return [ null, 0, v ]; }
+			var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
+			return [ h===6?0:h, m/v, v ];
+		}
+
+
+		function HSV_RGB(h, s, v) {
+			if(h === null) { return [ v, v, v ]; }
+			var i = Math.floor(h);
+			var f = i%2 ? h-i : 1-(h-i);
+			var m = v * (1 - s);
+			var n = v * (1 - s*f);
+			switch(i) {
+				case 6:
+				case 0: return [v,n,m];
+				case 1: return [n,v,m];
+				case 2: return [m,v,n];
+				case 3: return [m,n,v];
+				case 4: return [n,m,v];
+				case 5: return [v,m,n];
+			}
+		}
+
+
+		function removePicker() {
+			delete mxJSColor.picker.owner;
+			document.getElementsByTagName('body')[0].removeChild(mxJSColor.picker.boxB);
+		}
+
+
+		function drawPicker(x, y) {
+			if(!mxJSColor.picker) {
+				mxJSColor.picker = {
+					box : document.createElement('div'),
+					boxB : document.createElement('div'),
+					pad : document.createElement('div'),
+					padB : document.createElement('div'),
+					padM : document.createElement('div'),
+					sld : document.createElement('div'),
+					sldB : document.createElement('div'),
+					sldM : document.createElement('div'),
+					btn : document.createElement('div'),
+					btnS : document.createElement('span'),
+					btnT : document.createTextNode(THIS.pickerCloseText)
+				};
+				for(var i=0,segSize=4; i<mxJSColor.images.sld[1]; i+=segSize) {
+					var seg = document.createElement('div');
+					seg.style.height = segSize+'px';
+					seg.style.fontSize = '1px';
+					seg.style.lineHeight = '0';
+					mxJSColor.picker.sld.appendChild(seg);
+				}
+				mxJSColor.picker.sldB.appendChild(mxJSColor.picker.sld);
+				mxJSColor.picker.box.appendChild(mxJSColor.picker.sldB);
+				mxJSColor.picker.box.appendChild(mxJSColor.picker.sldM);
+				mxJSColor.picker.padB.appendChild(mxJSColor.picker.pad);
+				mxJSColor.picker.box.appendChild(mxJSColor.picker.padB);
+				mxJSColor.picker.box.appendChild(mxJSColor.picker.padM);
+				mxJSColor.picker.btnS.appendChild(mxJSColor.picker.btnT);
+				mxJSColor.picker.btn.appendChild(mxJSColor.picker.btnS);
+				mxJSColor.picker.box.appendChild(mxJSColor.picker.btn);
+				mxJSColor.picker.boxB.appendChild(mxJSColor.picker.box);
+			}
+
+			var p = mxJSColor.picker;
+
+			// controls interaction
+			p.box.onmouseup =
+			p.box.onmouseout = function() { if (!mxClient.IS_TOUCH) { target.focus(); } };
+			p.box.onmousedown = function() { abortBlur=true; };
+			p.box.onmousemove = function(e) {
+				if (holdPad || holdSld) {
+					holdPad && setPad(e);
+					holdSld && setSld(e);
+					if (document.selection) {
+						document.selection.empty();
+					} else if (window.getSelection) {
+						window.getSelection().removeAllRanges();
+					}
+					dispatchImmediateChange();
+				}
+			};
+			p.padM.onmouseup =
+			p.padM.onmouseout = function() { if(holdPad) { holdPad=false; mxJSColor.fireEvent(valueElement,'change'); } };
+			p.padM.onmousedown = function(e) {
+				// if the slider is at the bottom, move it up
+				switch(modeID) {
+					case 0: if (THIS.hsv[2] === 0) { THIS.fromHSV(null, null, 1.0); }; break;
+					case 1: if (THIS.hsv[1] === 0) { THIS.fromHSV(null, 1.0, null); }; break;
+				}
+				holdPad=true;
+				setPad(e);
+				dispatchImmediateChange();
+			};
+			p.sldM.onmouseup =
+			p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; mxJSColor.fireEvent(valueElement,'change'); } };
+			p.sldM.onmousedown = function(e) {
+				holdSld=true;
+				setSld(e);
+				dispatchImmediateChange();
+			};
+
+			// picker
+			var dims = getPickerDims(THIS);
+			p.box.style.width = dims[0] + 'px';
+			p.box.style.height = dims[1] + 'px';
+
+			// picker border
+			p.boxB.style.position = 'absolute';
+			p.boxB.style.clear = 'both';
+			p.boxB.style.left = x+'px';
+			p.boxB.style.top = y+'px';
+			p.boxB.style.zIndex = THIS.pickerZIndex;
+			p.boxB.style.border = THIS.pickerBorder+'px solid';
+			p.boxB.style.borderColor = THIS.pickerBorderColor;
+			p.boxB.style.background = THIS.pickerFaceColor;
+
+			// pad image
+			p.pad.style.width = mxJSColor.images.pad[0]+'px';
+			p.pad.style.height = mxJSColor.images.pad[1]+'px';
+
+			// pad border
+			p.padB.style.position = 'absolute';
+			p.padB.style.left = THIS.pickerFace+'px';
+			p.padB.style.top = THIS.pickerFace+'px';
+			p.padB.style.border = THIS.pickerInset+'px solid';
+			p.padB.style.borderColor = THIS.pickerInsetColor;
+
+			// pad mouse area
+			p.padM.style.position = 'absolute';
+			p.padM.style.left = '0';
+			p.padM.style.top = '0';
+			p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + mxJSColor.images.pad[0] + mxJSColor.images.arrow[0] + 'px';
+			p.padM.style.height = p.box.style.height;
+			p.padM.style.cursor = 'crosshair';
+
+			// slider image
+			p.sld.style.overflow = 'hidden';
+			p.sld.style.width = mxJSColor.images.sld[0]+'px';
+			p.sld.style.height = mxJSColor.images.sld[1]+'px';
+
+			// slider border
+			p.sldB.style.display = THIS.slider ? 'block' : 'none';
+			p.sldB.style.position = 'absolute';
+			p.sldB.style.right = THIS.pickerFace+'px';
+			p.sldB.style.top = THIS.pickerFace+'px';
+			p.sldB.style.border = THIS.pickerInset+'px solid';
+			p.sldB.style.borderColor = THIS.pickerInsetColor;
+
+			// slider mouse area
+			p.sldM.style.display = THIS.slider ? 'block' : 'none';
+			p.sldM.style.position = 'absolute';
+			p.sldM.style.right = '0';
+			p.sldM.style.top = '0';
+			p.sldM.style.width = mxJSColor.images.sld[0] + mxJSColor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
+			p.sldM.style.height = p.box.style.height;
+			try {
+				p.sldM.style.cursor = 'pointer';
+			} catch(eOldIE) {
+				p.sldM.style.cursor = 'hand';
+			}
+
+			// "close" button
+			function setBtnBorder() {
+				var insetColors = THIS.pickerInsetColor.split(/\s+/);
+				var pickerOutsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
+				p.btn.style.borderColor = pickerOutsetColor;
+			}
+			p.btn.style.display = THIS.pickerClosable ? 'block' : 'none';
+			p.btn.style.position = 'absolute';
+			p.btn.style.left = THIS.pickerFace + 'px';
+			p.btn.style.bottom = THIS.pickerFace + 'px';
+			p.btn.style.padding = '0 15px';
+			p.btn.style.height = '18px';
+			p.btn.style.border = THIS.pickerInset + 'px solid';
+			setBtnBorder();
+			p.btn.style.color = THIS.pickerButtonColor;
+			p.btn.style.font = '12px sans-serif';
+			p.btn.style.textAlign = 'center';
+			try {
+				p.btn.style.cursor = 'pointer';
+			} catch(eOldIE) {
+				p.btn.style.cursor = 'hand';
+			}
+			p.btn.onmousedown = function () {
+				THIS.hidePicker();
+			};
+			p.btnS.style.lineHeight = p.btn.style.height;
+
+			// load images in optimal order
+			switch(modeID) {
+				case 0: var padImg = 'hs.png'; break;
+				case 1: var padImg = 'hv.png'; break;
+			}
+			p.padM.style.backgroundImage = "url('"+mxJSColor.getDir()+"cross.gif')";
+			p.padM.style.backgroundRepeat = "no-repeat";
+			p.sldM.style.backgroundImage = "url('"+mxJSColor.getDir()+"arrow.gif')";
+			p.sldM.style.backgroundRepeat = "no-repeat";
+			p.pad.style.backgroundImage = "url('"+mxJSColor.getDir()+padImg+"')";
+			p.pad.style.backgroundRepeat = "no-repeat";
+			p.pad.style.backgroundPosition = "0 0";
+
+			// place pointers
+			redrawPad();
+			redrawSld();
+
+			mxJSColor.picker.owner = THIS;
+			document.getElementsByTagName('body')[0].appendChild(p.boxB);
+		}
+
+
+		function getPickerDims(o) {
+			var dims = [
+				2*o.pickerInset + 2*o.pickerFace + mxJSColor.images.pad[0] +
+					(o.slider ? 2*o.pickerInset + 2*mxJSColor.images.arrow[0] + mxJSColor.images.sld[0] : 0),
+				o.pickerClosable ?
+					4*o.pickerInset + 3*o.pickerFace + mxJSColor.images.pad[1] + o.pickerButtonHeight :
+					2*o.pickerInset + 2*o.pickerFace + mxJSColor.images.pad[1]
+			];
+			return dims;
+		}
+
+
+		function redrawPad() {
+			// redraw the pad pointer
+			switch(modeID) {
+				case 0: var yComponent = 1; break;
+				case 1: var yComponent = 2; break;
+			}
+			var x = Math.round((THIS.hsv[0]/6) * (mxJSColor.images.pad[0]-1));
+			var y = Math.round((1-THIS.hsv[yComponent]) * (mxJSColor.images.pad[1]-1));
+			mxJSColor.picker.padM.style.backgroundPosition =
+				(THIS.pickerFace+THIS.pickerInset+x - Math.floor(mxJSColor.images.cross[0]/2)) + 'px ' +
+				(THIS.pickerFace+THIS.pickerInset+y - Math.floor(mxJSColor.images.cross[1]/2)) + 'px';
+
+			// redraw the slider image
+			var seg = mxJSColor.picker.sld.childNodes;
+
+			switch(modeID) {
+				case 0:
+					var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
+					for(var i=0; i<seg.length; i+=1) {
+						seg[i].style.backgroundColor = 'rgb('+
+							(rgb[0]*(1-i/seg.length)*100)+'%,'+
+							(rgb[1]*(1-i/seg.length)*100)+'%,'+
+							(rgb[2]*(1-i/seg.length)*100)+'%)';
+					}
+					break;
+				case 1:
+					var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
+					var i = Math.floor(THIS.hsv[0]);
+					var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
+					switch(i) {
+						case 6:
+						case 0: rgb=[0,1,2]; break;
+						case 1: rgb=[1,0,2]; break;
+						case 2: rgb=[2,0,1]; break;
+						case 3: rgb=[2,1,0]; break;
+						case 4: rgb=[1,2,0]; break;
+						case 5: rgb=[0,2,1]; break;
+					}
+					for(var i=0; i<seg.length; i+=1) {
+						s = 1 - 1/(seg.length-1)*i;
+						c[1] = c[0] * (1 - s*f);
+						c[2] = c[0] * (1 - s);
+						seg[i].style.backgroundColor = 'rgb('+
+							(c[rgb[0]]*100)+'%,'+
+							(c[rgb[1]]*100)+'%,'+
+							(c[rgb[2]]*100)+'%)';
+					}
+					break;
+			}
+		}
+
+
+		function redrawSld() {
+			// redraw the slider pointer
+			switch(modeID) {
+				case 0: var yComponent = 2; break;
+				case 1: var yComponent = 1; break;
+			}
+			var y = Math.round((1-THIS.hsv[yComponent]) * (mxJSColor.images.sld[1]-1));
+			mxJSColor.picker.sldM.style.backgroundPosition =
+				'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(mxJSColor.images.arrow[1]/2)) + 'px';
+		}
+
+
+		function isPickerOwner() {
+			return mxJSColor.picker && mxJSColor.picker.owner === THIS;
+		}
+
+
+		function blurTarget() {
+			if(valueElement === target) {
+				THIS.importColor();
+			}
+			if(THIS.pickerOnfocus) {
+				THIS.hidePicker();
+			}
+		}
+
+
+		function blurValue() {
+			if(valueElement !== target) {
+				THIS.importColor();
+			}
+		}
+
+
+		function setPad(e) {
+			var mpos = mxJSColor.getRelMousePos(e);
+			var x = mpos.x - THIS.pickerFace - THIS.pickerInset;
+			var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
+			switch(modeID) {
+				case 0: THIS.fromHSV(x*(6/(mxJSColor.images.pad[0]-1)), 1 - y/(mxJSColor.images.pad[1]-1), null, leaveSld); break;
+				case 1: THIS.fromHSV(x*(6/(mxJSColor.images.pad[0]-1)), null, 1 - y/(mxJSColor.images.pad[1]-1), leaveSld); break;
+			}
+		}
+
+
+		function setSld(e) {
+			var mpos = mxJSColor.getRelMousePos(e);
+			var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
+			switch(modeID) {
+				case 0: THIS.fromHSV(null, null, 1 - y/(mxJSColor.images.sld[1]-1), leavePad); break;
+				case 1: THIS.fromHSV(null, 1 - y/(mxJSColor.images.sld[1]-1), null, leavePad); break;
+			}
+		}
+
+
+		function dispatchImmediateChange() {
+			if (THIS.onImmediateChange) {
+				if (typeof THIS.onImmediateChange === 'string') {
+					eval(THIS.onImmediateChange);
+				} else {
+					THIS.onImmediateChange(THIS);
+				}
+			}
+		}
+
+
+		var THIS = this;
+		var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
+		var abortBlur = false;
+		var
+			valueElement = mxJSColor.fetchElement(this.valueElement),
+			styleElement = mxJSColor.fetchElement(this.styleElement);
+		var
+			holdPad = false,
+			holdSld = false;
+		var
+			leaveValue = 1<<0,
+			leaveStyle = 1<<1,
+			leavePad = 1<<2,
+			leaveSld = 1<<3;
+
+		// target
+		/*mxJSColor.addEvent(target, 'focus', function() {
+			if(THIS.pickerOnfocus) { THIS.showPicker(); }
+		});
+		mxJSColor.addEvent(target, 'blur', function() {
+			if(!abortBlur) {
+				window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
+			} else {
+				abortBlur = false;
+			}
+		});*/
+
+		// valueElement
+		if(valueElement) {
+			var updateField = function() {
+				THIS.fromString(valueElement.value, leaveValue);
+				dispatchImmediateChange();
+			};
+			mxJSColor.addEvent(valueElement, 'keyup', updateField);
+			mxJSColor.addEvent(valueElement, 'input', updateField);
+			mxJSColor.addEvent(valueElement, 'blur', blurValue);
+			valueElement.setAttribute('autocomplete', 'off');
+		}
+
+		// styleElement
+		if(styleElement) {
+			styleElement.jscStyle = {
+				backgroundImage : styleElement.style.backgroundImage,
+				backgroundColor : styleElement.style.backgroundColor,
+				color : styleElement.style.color
+			};
+		}
+
+		// require images
+		switch(modeID) {
+			case 0: mxJSColor.requireImage('hs.png'); break;
+			case 1: mxJSColor.requireImage('hv.png'); break;
+		}
+		mxJSColor.requireImage('cross.gif');
+		mxJSColor.requireImage('arrow.gif');
+
+		this.importColor();
+	}
+
+};
+
+
+mxJSColor.install();

+ 222 - 0
assets/mxgraph-editor/open.html

@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Open Diagram</title>
+    <link rel="stylesheet" type="text/css" href="styles/grapheditor.css" />
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<script type="text/javascript">
+	// Reads files locally
+	function handleFiles(files)
+	{
+		for (var i = 0; i < files.length; i++)
+		{
+			(function(file)
+			{
+				// Small hack to support import
+				if (window.parent.openNew)
+				{
+					window.parent.open(window.parent.location.href);
+				}
+				
+				var reader = new FileReader();
+				reader.onload = function(e)
+				{
+					window.parent.openFile.setData(e.target.result, file.name);
+				};
+				reader.onerror = function(e)
+				{
+					console.log(e);
+				};
+				reader.readAsText(file);
+			})(files[i]);
+		}
+	};
+
+	// Handles form-submit by preparing to process response
+	function handleSubmit()
+	{
+		var form = window.openForm || document.getElementById('openForm');
+		
+		// Checks for support of the File API for local file access
+		// except for files where the parse is on the server
+		if (window.parent.Graph.fileSupport && form.upfile.files.length > 0)
+		{
+			handleFiles(form.upfile.files);
+			
+			return false;
+		}
+		else
+		{
+			if (/(\.xml)$/i.test(form.upfile.value) || /(\.txt)$/i.test(form.upfile.value) ||
+				/(\.mxe)$/i.test(form.upfile.value))
+			{
+				// Small hack to support import
+				if (window.parent.openNew)
+				{
+					window.parent.open(window.parent.location.href);
+				}
+				
+				// NOTE: File is loaded via JS injection into the iframe, which in turn sets the
+				// file contents in the parent window. The new window asks its opener if any file
+				// contents are available or waits for the contents to become available.
+				return true;
+			}
+			else
+			{
+				window.parent.mxUtils.alert(window.parent.mxResources.get('invalidOrMissingFile'));
+				
+				return false;
+			}
+		}
+	};
+	
+	// Hides this dialog
+	function hideWindow(cancel)
+	{
+		window.parent.openFile.cancel(cancel);
+	}
+	
+	function fileChanged()
+	{
+		var form = window.openForm || document.getElementById('openForm');
+		var openButton = document.getElementById('openButton');
+		
+		if (form.upfile.value.length > 0)
+		{
+			openButton.removeAttribute('disabled');
+		}
+		else
+		{
+			openButton.setAttribute('disabled', 'disabled');
+		}		
+	}
+
+	function main()
+	{
+		if (window.parent.Editor.useLocalStorage)
+		{
+			document.body.innerHTML = '';
+			var div = document.createElement('div');
+			div.style.fontFamily = 'Arial';
+			
+			if (localStorage.length == 0)
+			{
+				window.parent.mxUtils.write(div, window.parent.mxResources.get('noFiles'));
+			}
+			else
+			{
+				var keys = [];
+				
+				for (var i = 0; i < localStorage.length; i++)
+				{
+					keys.push(localStorage.key(i));
+				}
+				
+				// Sorts the array by filename (key)
+				keys.sort(function (a, b)
+				{
+				    return a.toLowerCase().localeCompare(b.toLowerCase());
+				});
+				
+				for (var i = 0; i < keys.length; i++)
+				{
+					var link = document.createElement('a');
+					link.style.fontDecoration = 'none';
+					link.style.fontSize = '14pt';
+					var key = keys[i];
+					window.parent.mxUtils.write(link, key);
+					link.style.cursor = 'pointer';
+					div.appendChild(link);
+					
+					var img = document.createElement('span');
+					img.className = 'geSprite geSprite-delete';
+					img.style.position = 'relative';
+					img.style.cursor = 'pointer';
+					img.style.display = 'inline-block';
+					div.appendChild(img);
+					
+					window.parent.mxUtils.br(div);
+					
+					window.parent.mxEvent.addListener(img, 'click', (function(k)
+					{
+						return function()
+						{
+							if (window.parent.mxUtils.confirm(window.parent.mxResources.get('delete') + ' "' + k + '"?'))
+							{
+								localStorage.removeItem(k);
+								window.location.reload();
+							}
+						};
+					})(key));
+
+					window.parent.mxEvent.addListener(link, 'click', (function(k)
+					{
+						return function()
+						{
+							try
+							{
+								window.parent.open(window.parent.location.href);
+								window.parent.openFile.setData(localStorage.getItem(k), k);
+							}
+							catch (e)
+							{
+								window.parent.mxUtils.alert(e.message);
+							}
+						};
+					})(key));
+				}
+			}
+
+			window.parent.mxUtils.br(div);
+			window.parent.mxUtils.br(div);
+			
+			var cancelBtn = window.parent.mxUtils.button(window.parent.mxResources.get('cancel'), function()
+			{
+				hideWindow(true);
+			});
+			cancelBtn.className = 'geBtn';
+			div.appendChild(cancelBtn);
+			
+			document.body.appendChild(div);
+		}
+		else
+		{
+			var editLink = document.getElementById('editLink');
+			var openButton = document.getElementById('openButton');
+			openButton.value = window.parent.mxResources.get(window.parent.openKey || 'open');
+			var cancelButton = document.getElementById('cancelButton');
+			cancelButton.value = window.parent.mxResources.get('cancel');
+			var supportedText = document.getElementById('openSupported');
+			supportedText.innerHTML = window.parent.mxResources.get('openSupported');
+			var form = window.openForm || document.getElementById('openForm');
+
+			form.setAttribute('action', window.parent.OPEN_URL);
+		}
+	};
+</script>
+<body onload="main();">
+<form method="POST" enctype="multipart/form-data" action="" name="openForm"
+	id="openForm" onsubmit="return handleSubmit();" accept-charset="UTF-8">
+<table style="width:100%;">
+<tr>
+<td style="height:40px;vertical-align:top;" colspan="2">
+<input type="file" name="upfile" onchange="fileChanged()">
+</td>
+</tr>
+<tr>
+<td colspan="2" height="120px" id="openSupported" style="font-family:arial;color:grey;font-size:9pt;vertical-align:top;text-align:left;">
+</td>
+</tr>
+<tr>
+<td>
+</td>
+<td style="vertical-align:middle;text-align:right;white-space:nowrap;">
+<input type="button" id="cancelButton" class="geBtn" value="Cancel" onclick="hideWindow(true);">
+<input type="submit" id="openButton" class="geBtn gePrimaryBtn" value="Open" disabled="disabled">
+</td>
+</tr>
+</table>
+</form>
+</body>
+</html>

+ 325 - 0
assets/mxgraph-editor/resources/grapheditor-bak.txt

@@ -0,0 +1,325 @@
+# Resources from graph.properties
+alreadyConnected=Nodes already connected
+cancel=Cancel
+close=Close
+collapse-expand=Collapse/Expand
+containsValidationErrors=Contains validation errors
+done=Done
+doubleClickOrientation=Doubleclick to Change Orientation
+error=Error
+errorSavingFile=Error saving file
+ok=OK
+updatingDocument=Updating Document. Please wait...
+updatingSelection=Updating Selection. Please wait...
+# Custom resources
+about=About
+actualSize=Actual Size
+add=Add
+addLayer=Add Layer
+addProperty=Add Property
+addToExistingDrawing=Add to Existing Drawing
+addWaypoint=Add Waypoint
+advanced=Advanced
+align=Align
+alignment=Alignment
+allChangesLost=All changes will be lost!
+angle=Angle
+apply=Apply
+arc=Arc
+arrange=Arrange
+arrow=Arrow
+arrows=Arrows
+automatic=Automatic
+autosave=Autosave
+autosize=Autosize
+back=Back
+background=Background
+backgroundColor=Background Color
+backgroundImage=Background Image
+basic=Basic
+block=Block
+blockquote=Blockquote
+bold=Bold
+border=Border
+borderWidth=Borderwidth
+borderColor=Border Color
+bottom=Bottom
+bottomAlign=Bottom Align
+bottomLeft=Bottom Left
+bottomRight=Bottom Right
+bulletedList=Bulleted List
+cannotOpenFile=Cannot open file
+center=Center
+change=Change
+changeOrientation=Change Orientation
+circle=Circle
+classic=Classic
+clearDefaultStyle=Clear Default Style
+clearWaypoints=Clear Waypoints
+clipart=Clipart
+collapse=Collapse
+collapseExpand=Collapse/Expand
+collapsible=Collapsible
+comic=Comic
+connect=Connect
+connection=Connection
+connectionPoints=Connection points
+connectionArrows=Connection arrows
+constrainProportions=Constrain Proportions
+copy=Copy
+copyConnect=Copy on Connect
+copySize=Copy Size
+create=Create
+curved=Curved
+custom=Custom
+cut=Cut
+dashed=Dashed
+decreaseIndent=Decrease Indent
+default=Default
+delete=Delete
+deleteColumn=Delete Column
+deleteRow=Delete Row
+diagram=Diagram
+diamond=Diamond
+diamondThin=Diamond (thin)
+direction=Direction
+distribute=Distribute
+divider=Divider
+documentProperties=Document Properties
+dotted=Dotted
+dpi=DPI
+drawing=Drawing{1}
+drawingEmpty=Drawing is empty
+drawingTooLarge=Drawing is too large
+duplicate=Duplicate
+duplicateIt=Duplicate {1}
+east=East
+edit=Edit
+editData=Edit Data
+editDiagram=Edit Diagram
+editImage=Edit Image
+editLink=Edit Link
+editStyle=Edit Style
+editTooltip=Edit Tooltip
+enterGroup=Enter Group
+enterValue=Enter Value
+enterName=Enter Name
+enterPropertyName=Enter Property Name
+entityRelation=Entity Relation
+exitGroup=Exit Group
+expand=Expand
+export=Export
+extras=Extras
+file=File
+fileNotFound=File not found
+filename=Filename
+fill=Fill
+fillColor=Fill Color
+fitPage=One Page
+fitPageWidth=Page Width
+fitTwoPages=Two Pages
+fitWindow=Fit Window
+flip=Flip
+flipH=Flip Horizontal
+flipV=Flip Vertical
+font=Font
+fontFamily=Font Family
+fontColor=Font Color
+fontSize=Font Size
+format=Format
+formatPanel=Format Panel
+general=Allgemein
+formatPdf=PDF
+formatPng=PNG
+formatGif=GIF
+formatJpg=JPEG
+formatSvg=SVG
+formatXml=XML
+formatted=Formatted
+formattedText=Formatted Text
+gap=Gap
+glass=Glass
+general=General
+global=Global
+gradient=Gradient
+gradientColor=Color
+grid=Grid
+gridSize=Grid Size
+group=Group
+guides=Guides
+heading=Heading
+height=Height
+help=Help
+hide=Hide
+hideIt=Hide {1}
+hidden=Hidden
+home=Home
+horizontal=Horizontal
+horizontalFlow=Horizontal Flow
+horizontalTree=Horizontal Tree
+html=HTML
+id=ID
+image=Image
+images=Images
+import=Import
+increaseIndent=Increase Indent
+insert=Insert
+insertColumnBefore=Insert Column Left
+insertColumnAfter=Insert Column Right
+insertHorizontalRule=Insert Horizontal Rule
+insertImage=Insert Image
+insertLink=Insert Link
+insertRowBefore=Insert Row Above
+insertRowAfter=Insert Row Below
+invalidInput=Invalid input
+invalidName=Invalid name
+invalidOrMissingFile=Invalid or missing file
+isometric=Isometric
+italic=Italic
+layers=Layers
+landscape=Landscape
+laneColor=Lanecolor
+layout=Layout
+left=Left
+leftAlign=Left Align
+leftToRight=Left to Right
+line=Line
+link=Link
+lineJumps=Line jumps
+lineend=Line End
+lineheight=Line Height
+linestart=Line Start
+linewidth=Linewidth
+loading=Loading
+lockUnlock=Lock/Unlock
+manual=Manual
+middle=Middle
+misc=Misc
+more=More
+moreResults=More Results
+move=Move
+moveSelectionTo=Move Selection to {1}
+navigation=Navigation
+new=New
+noColor=No Color
+noFiles=No files
+noMoreResults=No more results
+none=None
+noResultsFor=No results for '{1}'
+normal=Normal
+north=North
+numberedList=Numbered List
+opacity=Opacity
+open=Open
+openArrow=Open Arrow
+openFile=Open File
+openLink=Open Link
+openSupported=Supported format is .XML files saved from this software
+openInNewWindow=Open in New Window
+openInThisWindow=Open in this Window
+options=Options
+organic=Organic
+orthogonal=Orthogonal
+outline=Outline
+oval=Oval
+pages=Pages
+pageView=Page View
+pageScale=Page Scale
+pageSetup=Page Setup
+panTooltip=Space+Drag to Scroll
+paperSize=Paper Size
+paste=Paste
+pasteHere=Paste Here
+pasteSize=Paste Size
+pattern=Pattern
+perimeter=Perimeter
+placeholders=Placeholders
+plusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).
+portrait=Portrait
+position=Position
+posterPrint=Poster Print
+preview=Preview
+print=Print
+radialTree=Radial Tree
+redo=Redo
+removeFormat=Clear Formatting
+removeFromGroup=Remove from Group
+removeIt=Remove {1}
+removeWaypoint=Remove Waypoint
+rename=Rename
+renameIt=Rename {1}
+replace=Replace
+replaceIt={1} already exists. Do you want to replace it?
+replaceExistingDrawing=Replace existing drawing
+reset=Reset
+resetView=Reset View
+reverse=Reverse
+right=Right
+rightAlign=Right Align
+rightToLeft=Right to Left
+rotate=Rotate
+rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
+rotation=Rotation
+sketch=Sketch
+rounded=Rounded
+save=Save
+saveAs=Save as
+saved=Saved
+scrollbars=Scrollbars
+search=Search
+searchShapes=Search Shapes
+selectAll=Select All
+selectEdges=Select Edges
+selectFont=Select a Font
+selectNone=Select None
+selectVertices=Select Vertices
+setAsDefaultStyle=Set as Default Style
+shadow=Shadow
+shape=Shape
+sharp=Sharp
+sidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.
+simple=Simple
+simpleArrow=Simple Arrow
+size=Size
+solid=Solid
+sourceSpacing=Source Spacing
+south=South
+spacing=Spacing
+straight=Straight
+strikethrough=Strikethrough
+strokeColor=Line Color
+style=Style
+subscript=Subscript
+superscript=Superscript
+table=Table
+targetSpacing=Target Spacing
+text=Text
+textAlignment=Text Alignment
+textOpacity=Text Opacity
+toBack=To Back
+toFront=To Front
+tooltips=Tooltips
+top=Top
+topAlign=Top Align
+topLeft=Top Left
+topRight=Top Right
+transparent=Transparent
+turn=Rotate shape only by 90°
+uml=UML
+underline=Underline
+undo=Undo
+ungroup=Ungroup
+url=URL
+untitledLayer=Untitled Layer
+vertical=Vertical
+verticalFlow=Vertical Flow
+verticalTree=Vertical Tree
+view=View
+waypoints=Waypoints
+west=West
+width=Width
+wordWrap=Word Wrap
+writingDirection=Writing Direction
+zoom=Zoom
+zoomIn=Zoom In
+zoomOut=Zoom Out

+ 325 - 0
assets/mxgraph-editor/resources/grapheditor.txt

@@ -0,0 +1,325 @@
+# 来自图表的资源。性质
+alreadyConnected=已连接的节点
+cancel=取消
+close=关闭
+collapse-expand=折叠/扩展
+containsValidationErrors=包含验证错误
+done=完成
+doubleClickOrientation=双击以更改方向
+error=错误
+errorSavingFile=保存文件时出错
+ok=好啊
+updatingDocument=更新文件。请稍候...
+updatingSelection=更新所选内容。请稍候...
+# 自定义资源
+about=关于
+actualSize=实际尺寸
+add=添加
+addLayer=添加图层
+addProperty=添加属性
+addToExistingDrawing=添加到现有图形
+addWaypoint=添加航路点
+advanced=高级
+align=排列
+alignment=对齐
+allChangesLost=所有更改都将丢失!
+angle=角
+apply=申请
+arc=弧
+arrange=排列
+arrow=单箭头
+arrows=多箭头
+automatic=自动的
+autosave=自动保存
+autosize=自动调整大小
+back=返回
+background=背景
+backgroundColor=背景色
+backgroundImage=背景图片
+basic=基本
+block=块
+blockquote=块引用
+bold=加粗
+border=边框
+borderWidth=边框宽度
+borderColor=边框颜色
+bottom=底部
+bottomAlign=底部对齐
+bottomLeft=左下角
+bottomRight=右下角
+bulletedList=符号列表
+cannotOpenFile=无法打开文件
+center=居中
+change=改变
+changeOrientation=改变方向
+circle=圆圈
+classic=经典
+clearDefaultStyle=清除默认样式
+clearWaypoints=清除航路点
+clipart=美工图案
+collapse=折叠
+collapseExpand=折叠/扩展
+collapsible=可折叠
+comic=连环画
+connect=连接
+connection=连接
+connectionPoints=连接点
+connectionArrows=连接箭头
+constrainProportions=约束比例
+copy=复制
+copyConnect=连接时复制
+copySize=拷贝大小
+create=创建
+curved=弯曲
+custom=自定义尺寸
+cut=切
+dashed=虚线
+decreaseIndent=减少缩进
+default=默认
+delete=删除
+deleteColumn=删除列
+deleteRow=删除行
+diagram=图表
+diamond=菱形
+diamondThin=菱形(薄)
+direction=方向
+distribute=分配
+divider=分隔器
+documentProperties=文档属性
+dotted=斑点
+dpi=点每英寸
+drawing=图纸{1}
+drawingEmpty=绘图是空的
+drawingTooLarge=这幅图太大了
+duplicate=副本
+duplicateIt=副本{1}
+east=东
+edit=编辑
+editData=编辑数据
+editDiagram=编辑图表
+editImage=编辑图片
+editLink=编辑链接
+editStyle=编辑样式
+editTooltip=编辑工具提示
+enterGroup=进入组
+enterValue=输入值
+enterName=输入名称
+enterPropertyName=输入属性名
+entityRelation=实体联系
+exitGroup=退出组
+expand=扩大
+export=出口
+extras=其他
+file=文件
+fileNotFound=找不到文件
+filename=文件名
+fill=填充
+fillColor=填充颜色
+fitPage=适合一页面
+fitPageWidth=页宽
+fitTwoPages=适合两页
+fitWindow=适配窗口
+flip=翻转
+flipH=水平翻转
+flipV=垂直翻转
+font=字体
+fontFamily=字体系列
+fontColor=字体颜色
+fontSize=字号
+format=格式
+formatPanel=格式面板
+general=常规
+formatPdf=PDF
+formatPng=PNG
+formatGif=GIF
+formatJpg=JPEG
+formatSvg=SVG
+formatXml=XML
+formatted=格式化
+formattedText=格式化文本
+gap=间隔
+glass=玻璃
+general=常规{1}
+global=全局
+gradient=渐变
+gradientColor=渐变颜色
+grid=网格
+gridSize=网格大小
+group=组
+guides=导向
+heading=标题
+height=高
+help=帮助
+hide=隐藏
+hideIt=隐藏 {1}
+hidden=隐藏的
+home=主页
+horizontal=水平
+horizontalFlow=水平流动
+horizontalTree=水平树
+html=HTML
+id=ID
+image=Image
+images=Images
+import=Import
+increaseIndent=增加缩进
+insert=插入
+insertColumnBefore=向左插入列
+insertColumnAfter=向右插入列
+insertHorizontalRule=插入水平尺
+insertImage=插入图片
+insertLink=插入链接
+insertRowBefore=在上面插入行
+insertRowAfter=在下面插入行
+invalidInput=无效输入
+invalidName=无效名称
+invalidOrMissingFile=无效或缺少文件
+isometric=等距
+italic=斜体
+layers=层
+landscape=横向
+laneColor=车道颜色
+layout=布局
+left=左
+leftAlign=左对齐
+leftToRight=从左到右
+line=线
+link=链接
+lineJumps=跳线
+lineend=线端
+lineheight=线高
+linestart=线路起点
+linewidth=线宽
+loading=加载中
+lockUnlock=锁定/解锁
+manual=手册
+middle=中间
+misc=杂项
+more=更多
+moreResults=更多结果
+move=移动
+moveSelectionTo=将所选内容移动到 {1}
+navigation=导航
+new=新
+noColor=没有颜色
+noFiles=没有文件
+noMoreResults=没有更多的结果
+none=没有
+noResultsFor=没有结果'{1}'
+normal=正常
+north=北
+numberedList=编号清单
+opacity=透明度
+open=打开
+openArrow=开放式箭头
+openFile=打开文件
+openLink=打开连接
+openSupported=支持的格式为。从该软件保存的XML文件
+openInNewWindow=在新窗口中打开
+openInThisWindow=在这个窗口打开
+options=选项
+organic=器质性
+orthogonal=直角
+outline=概述
+oval=椭圆
+pages=页
+pageView=页面查看
+pageScale=页面比例
+pageSetup=页面设置
+panTooltip=空格+拖动以滚动
+paperSize=纸张尺寸
+paste=粘贴
+pasteHere=粘贴在这里
+pasteSize=粘贴大小
+pattern=模式
+perimeter=周边
+placeholders=占位符
+plusTooltip=单击以连接和克隆(ctrl+单击以克隆,shift+单击以连接)。拖动以连接(按住ctrl键并拖动以克隆)
+portrait=竖向
+position=位置
+posterPrint=图像打印
+preview=预览
+print=打印
+radialTree=径向树
+redo=重做
+removeFormat=清除格式
+removeFromGroup=从组中删除
+removeIt=删除{1}
+removeWaypoint=移除航路点
+rename=重命名
+renameIt=重命名 {1}
+replace=代替
+replaceIt={1} 已经存在。你想更换它吗?
+replaceExistingDrawing=替换现有图形
+reset=重置
+resetView=重置视图
+reverse=翻转
+right=右
+rightAlign=右对齐
+rightToLeft=从右向左
+rotate=旋转
+rotateTooltip=单击并拖动以旋转,单击以仅将形状旋转90度
+rotation=旋转tion{1}
+sketch=素描
+rounded=圆的
+save=保存
+saveAs=另存为
+saved=保存的
+scrollbars=滚动条
+search=搜索
+searchShapes=搜索形状
+selectAll=全选
+selectEdges=选择边
+selectFont=选择一种字体
+selectNone=选择无
+selectVertices=选择顶点
+setAsDefaultStyle=设置为默认样式
+shadow=阴影
+shape=形状
+sharp=锋利的
+sidebarTooltip=单击展开。将形状拖放到图表中。按住Shift键并单击以更改选择。Alt+单击以插入并连接
+simple=简单
+simpleArrow=简单箭头
+size=大小
+solid=固体
+sourceSpacing=源间距
+south=南
+spacing=间距
+straight=直
+strikethrough=删除线
+strokeColor=线条颜色
+style=样式
+subscript=下标
+superscript=上标
+table=表格
+targetSpacing=目标间距
+text=文字
+textAlignment=文本对齐方式
+textOpacity=文本不透明度
+toBack=返回
+toFront=到前面
+tooltips=工具提示
+top=顶部
+topAlign=顶部对齐
+topLeft=左上角
+topRight=右上角
+transparent=透明的
+turn=仅将形状旋转90°
+uml=UML
+underline=下划线
+undo=撤消
+ungroup=取消分组
+url=URL
+untitledLayer=无标题图层
+vertical=垂直
+verticalFlow=垂直流动
+verticalTree=垂直树
+view=视图
+waypoints=航点
+west=西
+width=宽度
+wordWrap=自动换行
+writingDirection=编写方向
+zoom=缩放
+zoomIn=放大
+zoomOut=缩小

+ 325 - 0
assets/mxgraph-editor/resources/grapheditor_de.txt

@@ -0,0 +1,325 @@
+# Resources from graph.properties
+alreadyConnected=Knoten schon verbunden
+cancel=Abbrechen
+close=Schliessen
+collapse-expand=Einklappen/Ausklappen
+containsValidationErrors=Enthält Validierungsfehler
+done=Fertig
+doubleClickOrientation=Doppelklicken um Orientierung zu ändern
+error=Fehler
+errorSavingFile=Fehler beim Speichern der Datei
+ok=OK
+updatingDocument=Aktualisiere Dokument. Bitte warten...
+updatingSelection=Aktualisiere Markierung. Bitte warten...
+# Custom resources
+about=Über
+actualSize=Tatsächliche Grösse
+add=Hinzufügen
+addLayer=Ebene einfügen
+addProperty=Eigenschaft einfügen
+addToExistingDrawing=In vorhandene Zeichnung einfügen
+addWaypoint=Wegpunkt einfügen
+advanced=Erweitert
+align=Ausrichten
+alignment=Ausrichtung
+allChangesLost=Alle Änderungen gehen verloren!
+angle=Winkel
+apply=Anwenden
+arc=Bogen
+arrange=Anordnen
+arrow=Pfeil
+arrows=Pfeile
+automatic=Automatisch
+autosave=Automatisch Speichern
+autosize=Grösse anpassen
+back=Zurück
+background=Hintergrund
+backgroundColor=Hintergrundfarbe
+backgroundImage=Hintergrundbild
+basic=Einfach
+block=Block
+blockquote=Zitat
+bold=Fett
+border=Rahmen
+borderWidth=Rahmenbreite
+borderColor=Rahmenfarbe
+bottom=Unten
+bottomAlign=Unten
+bottomLeft=Unten links
+bottomRight=Unten rechts
+bulletedList=Aufzählungsliste
+cannotOpenFile=Kann Datei nicht öffnen
+center=Zentriert
+change=Ändern
+changeOrientation=Orientierung ändern
+circle=Kreis
+classic=Klassisch
+clearDefaultStyle=Standardstyle löschen
+clearWaypoints=Wegpunkte löschen
+clipart=Clipart
+collapse=Einklappen
+collapseExpand=Ein-/Ausklappen
+collapsible=Einklappbar
+comic=Comic
+connect=Verbinden
+connection=Verbindung
+connectionPoints=Verbindungspunkte
+connectionArrows=Verbindungspfeile
+constrainProportions=Proportionen beibehalten
+copy=Kopieren
+copyConnect=Beim Verbinden kopieren
+copySize=Grösse kopieren
+create=Erstellen
+curved=Gebogen
+custom=Benutzerdefiniert
+cut=Ausschneiden
+dashed=Gestrichelt
+decreaseIndent=Einzug verringern
+default=Vorgegeben
+delete=Löschen
+deleteColumn=Spalte löschen
+deleteRow=Zeile löschen
+diagram=Diagramm
+diamond=Diamant
+diamondThin=Diamant (Schmal)
+direction=Richtung
+distribute=Verteilen
+divider=Treelinie
+documentProperties=Dokumenteigenschaften
+dotted=Punktiert
+dpi=DPI
+drawing=Zeichnung{1}
+drawingEmpty=Zeichnung ist leer
+drawingTooLarge=Zeichnung ist zu gross
+duplicate=Duplizieren
+duplicateIt={1} duplizieren
+east=Ost
+edit=Bearbeiten
+editData=Metadaten bearbeiten
+editDiagram=Diagramm bearbeiten
+editImage=Bild bearbeiten
+editLink=Link bearbeiten
+editStyle=Style bearbeiten
+editTooltip=Tooltip bearbeiten
+enterGroup=In Gruppe hinein
+enterValue=Wert eingeben
+enterName=Namen eingeben
+enterPropertyName=Eigenschaftsname eingeben
+entityRelation=Entity Relation
+exitGroup=Aus Gruppe heraus
+expand=Ausklappen
+export=Exportieren
+extras=Extras
+file=Datei
+fileNotFound=Datei nicht gefunden
+filename=Dateiname
+fill=Füllen
+fillColor=Füllfarbe
+fitPage=Ganze Seite
+fitPageWidth=Seitenbreite
+fitTwoPages=Zwei Seiten
+fitWindow=An Fenstergrösse anpassen
+flip=Spiegeln
+flipH=Horizontal Spiegeln
+flipV=Vertikal Spiegeln
+font=Schrift
+fontFamily=Schriftart
+fontColor=Schriftfarbe
+fontSize=Schriftgrösse
+format=Format
+formatPanel=Bereich "Formatieren"
+general=Allgemein
+formatPdf=PDF
+formatPng=PNG
+formatGif=GIF
+formatJpg=JPEG
+formatSvg=SVG
+formatXml=XML
+formatted=Formatiert
+formattedText=Formatierter Text
+gap=Gap
+glass=Glas
+general=Allgemein
+global=Global
+gradient=Verlauf
+gradientColor=Farbe
+grid=Gitternetz
+gridSize=Gitternetzgrösse
+group=Gruppieren
+guides=Führungslinien
+heading=Überschrift
+height=Höhe
+help=Hilfe
+hide=Verstecken
+hideIt={1} verstecken
+hidden=Versteckt
+home=Ursprung
+horizontal=Horizontal
+horizontalFlow=Horizontaler Fluss
+horizontalTree=Horizontaler Baum
+html=HTML
+id=ID
+image=Bild
+images=Bilder
+import=Importieren
+increaseIndent=Einzug vergrössern
+insert=Einfügen
+insertColumnBefore=Spalte links einfügen
+insertColumnAfter=Spalte rechts einfügen
+insertHorizontalRule=Horizontale Linie einfügen
+insertImage=Bild einfügen
+insertLink=Link einfügen
+insertRowBefore=Zeile oberhalb einfügen
+insertRowAfter=Zeile unterhalb einfügen
+invalidInput=Ungültige Eingabe
+invalidName=Ungültiger Name
+invalidOrMissingFile=Ungültige oder fehlende Datei
+isometric=Isometrisch
+italic=Kursiv
+layers=Ebenen
+landscape=Querformat
+laneColor=Lane-Farbe
+layout=Layout
+left=Links
+leftAlign=Links
+leftToRight=Von links nach rechts
+line=Linie
+lineJumps=Liniensprünge
+link=Link
+lineend=Linienende
+lineheight=Zeilenhöhe
+linestart=Linienanfang
+linewidth=Linienbreite
+loading=Wird geladen
+lockUnlock=Sperren/Entsperren
+manual=Manuell
+middle=Mitte
+misc=Verschiedenes
+more=Mehr
+moreResults=Mehr Resultate
+move=Verschieben
+moveSelectionTo=Markierung in {1} einfügen
+navigation=Navigation
+new=Neu
+noColor=Keine Farbe
+noFiles=Keine Dateien
+noMoreResults=Keine Weiteren Resultate
+none=Ohne
+noResultsFor=Keine Resultate für '{1}'
+normal=Normal
+north=Nord
+numberedList=Nummerierte Liste
+opacity=Deckkraft
+open=Öffnen
+openArrow=Offen
+openFile=Datei öffnen
+openLink=Link öffnen
+openSupported=Unterstützte Formate sind mit dieser Anwendung erstellte .XML Dateien
+openInNewWindow=In neuem Fenster öffnen
+openInThisWindow=In diesem Fenster öffnen
+options=Optionen
+organic=Organisch
+orthogonal=Orthogonal
+outline=Übersicht
+oval=Oval
+pages=Seiten
+pageView=Seitenansicht
+pageScale=Seitenskalierung
+pageSetup=Seite einrichten
+panTooltip=Leertaste+Ziehen um zu scrollen
+paperSize=Papiergrösse
+paste=Einfügen
+pasteHere=Hier einfügen
+pasteSize=Grösse einfügen
+pattern=Muster
+perimeter=Umfang
+placeholders=Platzhalter
+plusTooltip=Klicken zum Verbinden und Klonen (Ctrl-Taste gedrückt halten zum Klonen, Shift+Klick zum Verbinden). Ziehen zum verbinden (Ctrl-Taste gedrückt halten zum Klonen).
+portrait=Hochformat
+position=Position
+posterPrint=Posterdruck
+preview=Vorschau
+print=Drucken
+radialTree=Radialer Baum
+redo=Wiederherstellen
+removeFormat=Formatierung entfernen
+removeFromGroup=Aus Gruppe entfernen
+removeIt={1} entfernen
+removeWaypoint=Wegpunkt entfernen
+rename=Umbenennen
+renameIt={1} umbenennen
+replace=Ersetzen
+replaceIt={1} existiert bereits. Soll die Datei überschrieben werden?
+replaceExistingDrawing=Vorhandene Zeichnung ersetzen
+reset=Zurücksetzen
+resetView=Ansicht zurücksetzen
+reverse=Umdrehen
+right=Rechts
+rightAlign=Rechts
+rightToLeft=Von rechts nach links
+rotate=Rotieren
+rotateTooltip=Klicken und ziehen um zu rotieren, klicken um nur Form um 90 Grad zu drehen
+rotation=Rotation
+rough=Skizze
+rounded=Abgerundet
+save=Speichern
+saveAs=Speichern unter
+saved=Gespeichert
+scrollbars=Scrollbars
+search=Suchen
+searchShapes=Formen suchen
+selectAll=Alles markieren
+selectEdges=Kanten markieren
+selectFont=Schriftart wählen
+selectNone=Markierung aufheben
+selectVertices=Knoten markieren
+setAsDefaultStyle=Als Standardstyle festlegen
+shadow=Schatten
+shape=Shape
+sharp=Eckig
+sidebarTooltip=Klicken um zu erweitern. Objekte per Drag & Drop ins Diagramm einfügen. Shift+Klick um die Markierung zu ändern. Alt+Klick zum Einfügen und Verbinden.
+simple=Einfach
+simpleArrow=Einfacher Pfeil
+size=Grösse
+solid=Durchgehend
+sourceSpacing=Anfangsabstand
+south=Süd
+spacing=Abstand
+straight=Gerade
+strikethrough=Durchgestrichen
+strokeColor=Linienfarbe
+style=Style
+subscript=Tiefgestellt
+superscript=Hochgestellt
+table=Tabelle
+targetSpacing=Endabstand
+text=Text
+textAlignment=Text Ausrichtung
+textOpacity=Text Deckkraft
+toBack=Nach hinten
+toFront=Nach vorne
+tooltips=Tooltips
+top=Oben
+topLeft=Oben links
+topRight=Oben rechts
+topAlign=Oben
+transparent=Transparent
+turn=Nur Form um 90° drehen
+uml=UML
+underline=Unterstrichen
+undo=Rückgängig
+ungroup=Gruppierung aufheben
+untitledLayer=Unbenannte Ebene
+url=URL
+vertical=Vertikal
+verticalFlow=Vertikaler Fluss
+verticalTree=Vertikaler Baum
+view=Ansicht
+waypoints=Wegpunkte
+west=West
+width=Breite
+wordWrap=Autom. Zeilenumbruch
+writingDirection=Textrichtung
+zoom=Zoom
+zoomIn=Hineinzoomen
+zoomOut=Herauszoomen

+ 323 - 0
assets/mxgraph-editor/resources/grapheditor_se.txt

@@ -0,0 +1,323 @@
+# Resources from graph.properties
+alreadyConnected=Kopplingspunkterna är redan kopplade
+cancel=Avbryt
+close=Stäng
+collapse-expand=Komprimera/Expandera
+containsValidationErrors=Innehåller valideringsfel
+done=Klar
+doubleClickOrientation=Dubbelklicka för att byta orientering
+error=Det gick inte att spara filen
+ok=Ok
+updatingDocument=Uppdaterar dokument. Vänta...
+updatingSelection=Uppdaterar markering. Vänta...
+# Custom resources
+about=Om
+actualSize=Actual Size
+add=Lägg till
+addLayer=Lägg till lager
+addProperty=Lägg till egenskap
+addToExistingDrawing=Lägg till i befintlig ritning
+addWaypoint=Lägg till brytpunkt
+advanced=Avancerat
+align=Justera
+alignment=Justering
+allChangesLost=Alla ändringar kommer att ignoreras
+angle=Vinkel
+apply=Verkställ
+arc=Båge
+arrange=Fördela
+arrow=Pil
+arrows=Pilar
+automatic=Automatisk
+autosave=Spara automatiskt
+autosize=Automatisk storlek
+back=Tillbaka
+background=Bakgrund
+backgroundColor=Bakgrundsfärg
+backgroundImage=Bakgrundsbild
+basic=Grundläggande
+block=Indrag
+blockquote=Citat
+bold=Fet
+border=Kant
+borderWidth=Kantvidd
+borderColor=Kantfärg
+bottom=Underst
+bottomAlign=Justera underst
+bottomLeft=Vänster underkant
+bottomRight=Underst
+bulletedList=Punktlita
+cannotOpenFile=Kan inte öppna filen
+center=Centrera
+change=Ändra
+changeOrientation=Change Orientation
+circle=Cirkel
+classic=Klassisk
+clearDefaultStyle=Rensa standardstil
+clearWaypoints=Rensa brytpunkter
+clipart=Clipart
+collapse=Komprimera
+collapseExpand=Komprimera/Expandera
+collapsible=Komprimerbar
+comic=Comic
+connect=Koppla
+connection=Koppling
+connectionPoints=Kopplingspunkter
+connectionArrows=Kopplingspilar
+constrainProportions=Bevara proportioner
+copy=Kopiera
+copyConnect=Kopiera vid koppling
+copySize=Kopiera storlek
+create=Skapa
+curved=Böjd
+custom=Anpassad
+cut=Klipp ut
+dashed=Streckad
+decreaseIndent=Minska indrag
+default=Standard
+delete=Radera
+deleteColumn=Ta bort kolumn
+deleteRow=Ta bort rad
+diagram=Diagram
+diamond=Diamond
+diamondThin=Diamond (tunn)
+direction=Riktning
+distribute=Fördela
+divider=Avdelare
+documentProperties=Dokumentegenskaper
+dotted=Prickad
+dpi=DPI
+drawing=Ritning{1}
+drawingEmpty=Ritningen är tom
+drawingTooLarge=Ritningen är för stor
+duplicate=Dubblett
+duplicateIt=Dubblett {1}
+east=Öst
+edit=Redigera
+editData=Redigera data
+editDiagram=Redigera diagram
+editImage=Redigera bild
+editLink=Redigera länk
+editStyle=Redigera stil
+editTooltip=Redigera verktygstips 
+enterGroup=Ange grupp
+enterValue=Ange värde
+enterName=Ange namn
+enterPropertyName=Ange egenskapsvärde
+entityRelation=enhetsförhållande
+exitGroup=Avsluta grupp
+expand=Expandera
+export=Exportera
+extras=Övrigt
+file=Fil
+fileNotFound=Filen kunde inte hittas
+filename=Filnamn
+fill=Fyll
+fillColor=Fyllnadsfärg
+fitPage=En sida
+fitPageWidth=Sidbredd
+fitTwoPages=Två sidor
+fitWindow=Anpassa till fönster
+flip=Vänd
+flipH=Vänd vågrätt
+flipV=Vänd lodrätt
+font=Tecken
+fontFamily=Teckensnitt
+fontColor=Teckenfärg
+fontSize=Teckenstorlek
+format=Formatera
+formatPanel=Format Panel
+general=Allmänt
+formatPdf=PDF
+formatPng=PNG
+formatGif=GIF
+formatJpg=JPEG
+formatSvg=SVG
+formatXml=XML
+formatted=Formaterad
+formattedText=Formaterad text
+gap=Mellanrum
+glass=Glas
+general=Allmänt
+global=Global
+gradient=Toning
+gradientColor=Toningsfärg
+grid=Rutnät
+gridSize=Rutnätsstorlek
+group=Gruppera
+guides=Stödlinjer
+heading=Rubrik
+height=Höjd
+help=Hjälp
+hide=Dölj
+hideIt=Dölj {1}
+hidden=Dold
+home=Hem
+horizontal=Vågrätt
+horizontalFlow=Vågrätt flöde
+horizontalTree=Vågrätt träd
+html=HTML
+id=ID
+image=Bild
+images=Bilder
+import=Importera
+increaseIndent=Öka indrag
+insert=Infoga
+insertColumnBefore=Infoga kolumn till vänster
+insertColumnAfter=Infoga kolumn till höger
+insertHorizontalRule=Infoga vågrät linje
+insertImage=Infoga bild
+insertLink=Infoga länk
+insertRowBefore=Infoga rad ovan
+insertRowAfter=Infoga rad nedan
+invalidInput=Felaktig inmatning
+invalidName=Felaktigt namn
+invalidOrMissingFile=Felaktig eller saknad fil
+isometric=Isometrisk
+italic=Kursiv
+layers=Lager
+landscape=Liggande
+laneColor=Fältfärg
+layout=Utseende
+left=Vänster
+leftAlign=Vänsterjustera
+leftToRight=Vänster till höger
+line=Linje
+link=Länk
+lineJumps=Linjehopp
+lineend=Linjeslut
+lineheight=Linjehöjd
+linestart=Linjestart
+linewidth=Linjebredd
+loading=Laddar
+lockUnlock=Lås/Lås upp
+manual=Manuell
+middle=Mitten
+misc=Övrigt
+more=Mer
+moreResults=Fler resultat
+move=Flytta
+moveSelectionTo=Flytta markering till {1}
+navigation=Navigering
+new=Ny
+noColor=Inga färger
+noFiles=Inga filer
+noMoreResults=Inga fler resultat
+none=Ingen
+noResultsFor=Inga resultat för '{1}'
+normal=Normal
+north=Norr
+numberedList=Numrerad lista
+opacity=Transparens
+open=Öppna
+openArrow=Öppen pil
+openFile=Öppna fil
+openLink=Öppna länk
+openSupported=Format som stöds är .XML-filer som sparats från denna applikation
+openInNewWindow=Öppna i nytt fönster
+openInThisWindow=Öppna i detta fönster
+options=Alternativ
+organic=Organisk
+orthogonal=Rätvinklig
+outline=Kontur
+oval=Oval		 
+pages=Sidor
+pageView=Sidvy
+pageScale=Sidskala
+pageSetup=Sidinställningar
+panTooltip=Mellanslag+Dra för att skrolla
+paperSize=Pappersstorlek
+paste=Klistra in
+pasteHere=Klistra in här
+pasteSize=Klistra in storlek
+pattern=Mönster
+perimeter=Områpde
+placeholders=styrlinjer
+plusTooltip=Klicka för att koppls och klona (ctrl+klick för att klona, skift+klicka för att koppla). Dra för att koppla (ctrl+dra för att klona).
+portrait=Stående
+position=Position
+posterPrint=Affischutskrift
+preview=Förhandsgranska
+print=Skriv ut
+radialTree=Soldiagram
+redo=Gör om
+removeFormat=Rensa formatering
+removeFromGroup=Ta bort från grupp
+removeIt=Ta bort {1}
+removeWaypoint=Ta bort brytpunkt
+rename=Ändra namn
+renameIt=Ändra namn på {1}
+replace=Ersätt
+replaceIt={1} finns redan. Vill du ersätta den?
+replaceExistingDrawing=Ersätt befintlig ritning
+reset=Återställ
+resetView=Återställ vy
+reverse=Bakvänd
+right=Höger
+rightAlign=Högerjustera
+rightToLeft=Höger till vänster
+rotate=Rotera
+rotateTooltip=Klicka och dra för att rotera, klicka för att rotera en form med enbart 90 grader click to turn form only by 90 degrees
+rotation=Rotering
+rounded=Rundad
+save=Spara
+saveAs=Spara som
+saved=Sparad
+scrollbars=Rullningslistor
+search=Sök
+searchformer=Sök former
+selectAll=Markera alla
+selectEdges=Markera kanter
+selectFont=Välj teckensnitt
+selectNone=Avmarkera 
+selectVertices=Välj Punkter
+setAsDefaultStyle=Ange som standardutseende
+shadow=Skugga
+shape=Form
+sharp=Skärpa
+sidebarTooltip=Klicka för att utöka. Dra och släpp former i ritningen Skift+klicka för att ändra markering. Alt+klicka för att infoga och koppls.
+simple=Enkel
+simpleArrow=Enkelpil
+size=Storlek
+solid=Hel fyllning
+sourceSpacing=Source Spacing
+south=Syd
+spacing=Mellanrum
+straight=Rak
+strikethrough=Genomstruken
+strokeColor=Linjefärg
+style=Stil
+subscript=Nedsänkt
+superscript=Upphöjd
+table=Tabell
+targetSpacing=Målmellanrum
+text=Text
+textAlignment=Textjustering
+textOpacity=Texttransparens
+toBack=Placera längst bak
+toFront=Placera längst fram
+tooltips=Tooltips
+top=Överst
+topAlign=Justera mot överkant
+topLeft=Vänster överkant
+topRight=Höger överkant
+transparent=Transparent
+turn=Rotatera form enbart med 90°
+uml=UML
+underline=Understruken
+undo=Ångra
+ungroup=Dela upp grupp
+url=URL
+untitledLayer=Namnlöst lager
+vertical=Lodrät
+verticalFlow=Lodrätt flöde
+verticalTree=Lodrätt träd
+view=Vy
+waypoints=Brytpunkter
+west=Väst
+width=Bredd
+wordWrap=Radbrytning
+writingDirection=Skrivriktning
+zoom=Zooma
+zoomIn=Zooma in
+zoomOut=Zooma ut

+ 20 - 0
assets/mxgraph-editor/resources/help.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Graph Editor Help</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <link rel="stylesheet" type="text/css" href="../styles/help.css">
+</head>
+<body>
+	<h1>Graph Editor Help</h1>
+	<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+	eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
+	voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
+	clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
+	amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
+	nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
+	diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
+	Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
+	sit amet.</p>
+</body>
+</html>

+ 20 - 0
assets/mxgraph-editor/resources/help_de.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Graph Editor Hilfe</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <link rel="stylesheet" type="text/css" href="../styles/help.css">
+</head>
+<body>
+	<h1>Graph Editor Hilfe</h1>
+	<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+	eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
+	voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
+	clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
+	amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
+	nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
+	diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
+	Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
+	sit amet.</p>
+</body>
+</html>

+ 21 - 0
assets/mxgraph-editor/resources/help_se.html

@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Graph Editor Hjälp</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<html lang="se" xml:lang="se" xmlns="http://www.w3.org/1999/xhtml">
+    <link rel="stylesheet" type="text/css" href="../styles/help.css">
+</head>
+<body>
+	<h1>Graph Editor Hjälp</h1>
+	<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+	eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
+	voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
+	clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
+	amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
+	nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
+	diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
+	Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
+	sit amet.</p>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 92 - 0
assets/mxgraph-editor/sanitizer/sanitizer.min.js


+ 849 - 0
assets/mxgraph-editor/stencils/arrows.xml

@@ -0,0 +1,849 @@
+<shapes name="mxGraph.arrows">
+<shape name="Arrow Down" h="97.5" w="70" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+<path>
+<move x="20" y="0"/>
+<line x="20" y="59"/>
+<line x="0" y="59"/>
+<line x="35" y="97.5"/>
+<line x="70" y="59"/>
+<line x="50" y="59"/>
+<line x="50" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Arrow Left" h="70" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="97.5" y="20"/>
+<line x="38.5" y="20"/>
+<line x="38.5" y="0"/>
+<line x="0" y="35"/>
+<line x="38.5" y="70"/>
+<line x="38.5" y="50"/>
+<line x="97.5" y="50"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Arrow Right" h="70" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="20"/>
+<line x="59" y="20"/>
+<line x="59" y="0"/>
+<line x="97.5" y="35"/>
+<line x="59" y="70"/>
+<line x="59" y="50"/>
+<line x="0" y="50"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Arrow Up" h="97.5" w="70" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+<path>
+<move x="20" y="97.5"/>
+<line x="20" y="38.5"/>
+<line x="0" y="38.5"/>
+<line x="35" y="0"/>
+<line x="70" y="38.5"/>
+<line x="50" y="38.5"/>
+<line x="50" y="97.5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Bent Left Arrow" h="97" w="97.01" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.85" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.29" perimeter="0" name="W"/>
+</connections>
+<background>
+<path>
+<move x="68" y="97"/>
+<line x="68" y="48"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="63" y="43"/>
+<line x="38" y="43"/>
+<line x="38" y="56"/>
+<line x="0" y="28"/>
+<line x="38" y="0"/>
+<line x="38" y="13"/>
+<line x="63" y="13"/>
+<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="97" y="48"/>
+<line x="97" y="97"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Bent Right Arrow" h="97" w="97.01" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.15" y="1" perimeter="0" name="S"/>
+<constraint x="1" y="0.29" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="29.01" y="97"/>
+<line x="29.01" y="48"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="34.01" y="43"/>
+<line x="59.01" y="43"/>
+<line x="59.01" y="56"/>
+<line x="97.01" y="28"/>
+<line x="59.01" y="0"/>
+<line x="59.01" y="13"/>
+<line x="34.01" y="13"/>
+<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0.01" y="48"/>
+<line x="0.01" y="97"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Bent Up Arrow" h="83.5" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.71" y="0" perimeter="0" name="N"/>
+<constraint x="0" y="0.82" perimeter="0" name="W"/>
+</connections>
+<background>
+<path>
+<move x="0" y="53.5"/>
+<line x="54" y="53.5"/>
+<line x="54" y="23.5"/>
+<line x="42" y="23.5"/>
+<line x="69" y="0"/>
+<line x="97" y="23.5"/>
+<line x="84" y="23.5"/>
+<line x="84" y="83.5"/>
+<line x="0" y="83.5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Callout Double Arrow" h="97.5" w="50" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+<path>
+<move x="15" y="24"/>
+<line x="15" y="19"/>
+<line x="6" y="19"/>
+<line x="25" y="0"/>
+<line x="44" y="19"/>
+<line x="35" y="19"/>
+<line x="35" y="24"/>
+<line x="50" y="24"/>
+<line x="50" y="74"/>
+<line x="35" y="74"/>
+<line x="35" y="79"/>
+<line x="44" y="79"/>
+<line x="25" y="97.5"/>
+<line x="6" y="79"/>
+<line x="15" y="79"/>
+<line x="15" y="74"/>
+<line x="0" y="74"/>
+<line x="0" y="24"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Callout Quad Arrow" h="97" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="38.5" y="23.5"/>
+<line x="38.5" y="18.5"/>
+<line x="29.5" y="18.5"/>
+<line x="48.5" y="0"/>
+<line x="67.5" y="18.5"/>
+<line x="58.5" y="18.5"/>
+<line x="58.5" y="23.5"/>
+<line x="73.5" y="23.5"/>
+<line x="73.5" y="38.5"/>
+<line x="78.5" y="38.5"/>
+<line x="78.5" y="29.5"/>
+<line x="97" y="48.5"/>
+<line x="78.5" y="67.5"/>
+<line x="78.5" y="58.5"/>
+<line x="73.5" y="58.5"/>
+<line x="73.5" y="73.5"/>
+<line x="58.5" y="73.5"/>
+<line x="58.5" y="78.5"/>
+<line x="67.5" y="78.5"/>
+<line x="48.5" y="97"/>
+<line x="29.5" y="78.5"/>
+<line x="38.5" y="78.5"/>
+<line x="38.5" y="73.5"/>
+<line x="23.5" y="73.5"/>
+<line x="23.5" y="58.5"/>
+<line x="18.5" y="58.5"/>
+<line x="18.5" y="67.5"/>
+<line x="0" y="48.5"/>
+<line x="18.5" y="29.5"/>
+<line x="18.5" y="38.5"/>
+<line x="23.5" y="38.5"/>
+<line x="23.5" y="23.5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Callout Up Arrow" h="98" w="60" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+</connections>
+<background>
+<path>
+<move x="20" y="39"/>
+<line x="20" y="19"/>
+<line x="11" y="19"/>
+<line x="30" y="0"/>
+<line x="49" y="19"/>
+<line x="40" y="19"/>
+<line x="40" y="39"/>
+<line x="60" y="39"/>
+<line x="60" y="98"/>
+<line x="0" y="98"/>
+<line x="0" y="39"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Chevron Arrow" h="60" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.31" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="30" y="30"/>
+<line x="0" y="0"/>
+<line x="66" y="0"/>
+<line x="96" y="30"/>
+<line x="66" y="60"/>
+<line x="0" y="60"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Circular Arrow" h="69.5" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.12" y="0.64" perimeter="0" name="SW"/>
+<constraint x="0.794" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="44.5"/>
+<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="89" y="44.5"/>
+<line x="97" y="44.5"/>
+<line x="77" y="69.5"/>
+<line x="57" y="44.5"/>
+<line x="65" y="44.5"/>
+<arc rx="20.5" ry="20.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="24" y="44.5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Jump-in Arrow 1" h="99.41" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.024" perimeter="0" name="NW"/>
+<constraint x="0.657" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+
+<linejoin join="round"/>
+<path>
+<move x="30" y="60.41"/>
+<line x="48" y="60.41"/>
+<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0" y="2.41"/>
+<arc rx="75" ry="75" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="60.41"/>
+<line x="96" y="60.41"/>
+<line x="63" y="99.41"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Jump-in Arrow 2" h="99.41" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="1" y="0.024" perimeter="0" name="NE"/>
+<constraint x="0.343" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+
+<linejoin join="round"/>
+<path>
+<move x="66" y="60.41"/>
+<line x="48" y="60.41"/>
+<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="96" y="2.41"/>
+<arc rx="75" ry="75" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="18" y="60.41"/>
+<line x="0" y="60.41"/>
+<line x="33" y="99.41"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Left and Up Arrow" h="96.5" w="96.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.71" perimeter="0" name="W"/>
+<constraint x="0.71" y="0" perimeter="0" name="N"/>
+</connections>
+<background>
+<path>
+<move x="23.5" y="53.5"/>
+<line x="53.5" y="53.5"/>
+<line x="53.5" y="23.5"/>
+<line x="41.5" y="23.5"/>
+<line x="68.5" y="0"/>
+<line x="96.5" y="23.5"/>
+<line x="83.5" y="23.5"/>
+<line x="83.5" y="83.5"/>
+<line x="23.5" y="83.5"/>
+<line x="23.5" y="96.5"/>
+<line x="0" y="68.5"/>
+<line x="23.5" y="41.5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Left Sharp Edged Head Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="97.5" y="20"/>
+<line x="18.5" y="20"/>
+<line x="30.5" y="0"/>
+<line x="18.5" y="0"/>
+<line x="0" y="30"/>
+<line x="18.5" y="60"/>
+<line x="30.5" y="60"/>
+<line x="18.5" y="40"/>
+<line x="97.5" y="40"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Notched Signal-in Arrow" h="30" w="96.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="0"/>
+<line x="83" y="0"/>
+<line x="96.5" y="15"/>
+<line x="83" y="30"/>
+<line x="0" y="30"/>
+<line x="13" y="15"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Quad Arrow" h="97.5" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="39" y="39"/>
+<line x="39" y="19"/>
+<line x="30" y="19"/>
+<line x="49" y="0"/>
+<line x="68" y="19"/>
+<line x="59" y="19"/>
+<line x="59" y="39"/>
+<line x="79" y="39"/>
+<line x="79" y="30"/>
+<line x="97.5" y="49"/>
+<line x="79" y="68"/>
+<line x="79" y="59"/>
+<line x="59" y="59"/>
+<line x="59" y="79"/>
+<line x="68" y="79"/>
+<line x="49" y="97.5"/>
+<line x="30" y="79"/>
+<line x="39" y="79"/>
+<line x="39" y="59"/>
+<line x="19" y="59"/>
+<line x="19" y="68"/>
+<line x="0" y="49"/>
+<line x="19" y="30"/>
+<line x="19" y="39"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Right Notched Arrow" h="70" w="96.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="20"/>
+<line x="58" y="20"/>
+<line x="58" y="0"/>
+<line x="96.5" y="35"/>
+<line x="58" y="70"/>
+<line x="58" y="50"/>
+<line x="0" y="50"/>
+<line x="13" y="35"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Sharp Edged Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="97.5" y="20"/>
+<line x="18.5" y="20"/>
+<line x="27.5" y="5"/>
+<line x="18.5" y="0"/>
+<line x="0" y="30"/>
+<line x="18.5" y="60"/>
+<line x="27.5" y="55"/>
+<line x="18.5" y="40"/>
+<line x="97.5" y="40"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Signal-in Arrow" h="30" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="0"/>
+<line x="84" y="0"/>
+<line x="97.5" y="15"/>
+<line x="84" y="30"/>
+<line x="0" y="30"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Slender Left Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="97.5" y="20"/>
+<line x="18.5" y="20"/>
+<line x="18.5" y="0"/>
+<line x="0" y="30"/>
+<line x="18.5" y="60"/>
+<line x="18.5" y="40"/>
+<line x="97.5" y="40"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Slender Two Way Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="78.5" y="20"/>
+<line x="18.5" y="20"/>
+<line x="18.5" y="0"/>
+<line x="0" y="30"/>
+<line x="18.5" y="60"/>
+<line x="18.5" y="40"/>
+<line x="78.5" y="40"/>
+<line x="78.5" y="60"/>
+<line x="97.5" y="30"/>
+<line x="78.5" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Slender Wide Tailed Arrow" h="60" w="96.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.8" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="58.5" y="20"/>
+<line x="18.5" y="20"/>
+<line x="18.5" y="0"/>
+<line x="0" y="30"/>
+<line x="18.5" y="60"/>
+<line x="18.5" y="40"/>
+<line x="58.5" y="40"/>
+<line x="73.5" y="60"/>
+<line x="96.5" y="60"/>
+<line x="76.5" y="30"/>
+<line x="96.5" y="0"/>
+<line x="73.5" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Striped Arrow" h="70" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="24" y="20"/>
+<line x="59" y="20"/>
+<line x="59" y="0"/>
+<line x="97.5" y="35"/>
+<line x="59" y="70"/>
+<line x="59" y="50"/>
+<line x="24" y="50"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<rect x="8" y="20" w="12" h="30"/>
+<fillstroke/>
+<rect x="0" y="20" w="4" h="30"/>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Stylised Notched Arrow" h="60" w="96.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+
+<miterlimit limit="8"/>
+<path>
+<move x="0" y="5"/>
+<line x="68" y="20"/>
+<line x="58" y="0"/>
+<line x="96.5" y="30"/>
+<line x="58" y="60"/>
+<line x="68" y="45"/>
+<line x="0" y="55"/>
+<line x="13" y="30"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Triad Arrow" h="68" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.72" perimeter="0" name="W"/>
+<constraint x="1" y="0.72" perimeter="0" name="E"/>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+</connections>
+<background>
+<path>
+<move x="39" y="39"/>
+<line x="39" y="19"/>
+<line x="30" y="19"/>
+<line x="49" y="0"/>
+<line x="68" y="19"/>
+<line x="59" y="19"/>
+<line x="59" y="39"/>
+<line x="79" y="39"/>
+<line x="79" y="30"/>
+<line x="97.5" y="49"/>
+<line x="79" y="68"/>
+<line x="79" y="59"/>
+<line x="39" y="59"/>
+<line x="19" y="59"/>
+<line x="19" y="68"/>
+<line x="0" y="49"/>
+<line x="19" y="30"/>
+<line x="19" y="39"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Two Way Arrow Horizontal" h="60" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="63" y="15"/>
+<line x="63" y="0"/>
+<line x="96" y="30"/>
+<line x="63" y="60"/>
+<line x="63" y="45"/>
+<line x="33" y="45"/>
+<line x="33" y="60"/>
+<line x="0" y="30"/>
+<line x="33" y="0"/>
+<line x="33" y="15"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Two Way Arrow Vertical" h="96" w="60" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+<path>
+<move x="15" y="63"/>
+<line x="0" y="63"/>
+<line x="30" y="96"/>
+<line x="60" y="63"/>
+<line x="45" y="63"/>
+<line x="45" y="33"/>
+<line x="60" y="33"/>
+<line x="30" y="0"/>
+<line x="0" y="33"/>
+<line x="15" y="33"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="U Turn Arrow" h="98" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.12" y="1" perimeter="0" name="SW"/>
+<constraint x="0.792" y="0.71" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="44.5"/>
+<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="89" y="44.5"/>
+<line x="97" y="44.5"/>
+<line x="77" y="69.5"/>
+<line x="57" y="44.5"/>
+<line x="65" y="44.5"/>
+<arc rx="20.5" ry="20.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="24" y="44.83"/>
+<line x="24" y="98"/>
+<line x="0" y="98"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="U Turn Down Arrow" h="62" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.91" y="1" perimeter="0" name="SE"/>
+<constraint x="0.237" y="1" perimeter="0" name="SW"/>
+</connections>
+<background>
+<path>
+<move x="97" y="62"/>
+<line x="97" y="32"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="33" y="32"/>
+<line x="46" y="32"/>
+<line x="23" y="62"/>
+<line x="0" y="32"/>
+<line x="13" y="32"/>
+<arc rx="32" ry="32" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="45" y="0"/>
+<line x="65" y="0"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="53" y="3"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="32"/>
+<line x="78" y="62"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="U Turn Left Arrow" h="97.07" w="62.23" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.76" perimeter="0" name="SW"/>
+<constraint x="0" y="0.1" perimeter="0" name="NW"/>
+</connections>
+<background>
+<path>
+<move x="0" y="0.19"/>
+<line x="30" y="0.07"/>
+<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="1" x="30.25" y="64.07"/>
+<line x="30.2" y="51.07"/>
+<line x="0.29" y="74.19"/>
+<line x="30.37" y="97.07"/>
+<line x="30.32" y="84.07"/>
+<arc rx="32" ry="32" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="0" x="62.2" y="51.95"/>
+<line x="62.13" y="31.95"/>
+<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="1" x="59.17" y="43.96"/>
+<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="0" x="30.08" y="19.07"/>
+<line x="0.08" y="19.19"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="U Turn Right Arrow" h="97.07" w="62.23" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="1" y="0.76" perimeter="0" name="SW"/>
+<constraint x="1" y="0.1" perimeter="0" name="NW"/>
+</connections>
+<background>
+<path>
+<move x="62.23" y="0.19"/>
+<line x="32.23" y="0.07"/>
+<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="0" x="31.99" y="64.07"/>
+<line x="32.03" y="51.07"/>
+<line x="61.95" y="74.19"/>
+<line x="31.86" y="97.07"/>
+<line x="31.91" y="84.07"/>
+<arc rx="32" ry="32" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="1" x="0.03" y="51.95"/>
+<line x="0.11" y="31.95"/>
+<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="0" x="3.06" y="43.96"/>
+<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="1" x="32.16" y="19.07"/>
+<line x="62.16" y="19.19"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="U Turn Up Arrow" h="62" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.91" y="0" perimeter="0" name="NE"/>
+<constraint x="0.237" y="0" perimeter="0" name="NW"/>
+</connections>
+<background>
+<path>
+<move x="97" y="0"/>
+<line x="97" y="30"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="30"/>
+<line x="46" y="30"/>
+<line x="23" y="0"/>
+<line x="0" y="30"/>
+<line x="13" y="30"/>
+<arc rx="32" ry="32" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="45" y="62"/>
+<line x="65" y="62"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="53" y="59"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="78" y="30"/>
+<line x="78" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+</shapes>

+ 895 - 0
assets/mxgraph-editor/stencils/basic.xml

@@ -0,0 +1,895 @@
+<shapes name="mxgraph.basic">
+<shape name="4 Point Star" h="92" w="92" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="46" y="0"/>
+<line x="56" y="36"/>
+<line x="92" y="46"/>
+<line x="56" y="56"/>
+<line x="46" y="92"/>
+<line x="36" y="56"/>
+<line x="0" y="46"/>
+<line x="36" y="36"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="6 Point Star" h="84.5" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.24" y="0" perimeter="0" name="N1"/>
+<constraint x="0.24" y="1" perimeter="0" name="S1"/>
+<constraint x="0.76" y="0" perimeter="0" name="N2"/>
+<constraint x="0.76" y="1" perimeter="0" name="S2"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="23" y="28.9"/>
+<line x="23" y="0"/>
+<line x="48" y="14.4"/>
+<line x="73" y="0"/>
+<line x="73" y="28.9"/>
+<line x="96" y="42.2"/>
+<line x="73" y="55.6"/>
+<line x="73" y="84.5"/>
+<line x="48" y="70"/>
+<line x="23" y="84.5"/>
+<line x="23" y="55.6"/>
+<line x="0" y="42.2"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="8 Point Star" h="96" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.29" y="0" perimeter="0" name="N1"/>
+<constraint x="0.29" y="1" perimeter="0" name="S1"/>
+<constraint x="0.71" y="0" perimeter="0" name="N2"/>
+<constraint x="0.71" y="1" perimeter="0" name="S2"/>
+<constraint x="0" y="0.29" perimeter="0" name="W1"/>
+<constraint x="0" y="0.71" perimeter="0" name="W2"/>
+<constraint x="1" y="0.29" perimeter="0" name="E1"/>
+<constraint x="1" y="0.71" perimeter="0" name="E2"/>
+</connections>
+<background>
+<path>
+<move x="28" y="28"/>
+<line x="28" y="0"/>
+<line x="48" y="20"/>
+<line x="68" y="0"/>
+<line x="68" y="28"/>
+<line x="96" y="28"/>
+<line x="76" y="48"/>
+<line x="96" y="68"/>
+<line x="68" y="68"/>
+<line x="68" y="96"/>
+<line x="48" y="76"/>
+<line x="28" y="96"/>
+<line x="28" y="68"/>
+<line x="0" y="68"/>
+<line x="20" y="48"/>
+<line x="0" y="28"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Banner" h="50" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.8" perimeter="0" name="S"/>
+<constraint x="0.13" y="0.6" perimeter="0" name="W"/>
+<constraint x="0.87" y="0.6" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="50"/>
+<line x="38" y="50"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="40.5" y="47.5"/>
+<line x="40.5" y="40"/>
+<line x="55.5" y="40"/>
+<line x="55.5" y="47.5"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="58" y="50"/>
+<line x="96" y="50"/>
+<line x="83" y="30"/>
+<line x="96" y="10"/>
+<line x="70.5" y="10"/>
+<line x="70.5" y="2.5"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="68" y="0"/>
+<line x="28" y="0"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="25.5" y="2.5"/>
+<line x="25.5" y="10"/>
+<line x="0" y="10"/>
+<line x="13" y="30"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="40.5" y="47.5"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="38" y="45"/>
+<line x="28" y="45"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="28" y="40"/>
+<line x="68" y="40"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="68" y="45"/>
+<line x="58" y="45"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="55.5" y="47.5"/>
+<move x="25.5" y="42.5"/>
+<line x="25.5" y="10"/>
+<move x="70.5" y="42.5"/>
+<line x="70.5" y="10"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Cloud Callout" h="61.4" w="90.41" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.74" perimeter="0" name="S"/>
+<constraint x="0.015" y="0.4" perimeter="0" name="W"/>
+<constraint x="0.993" y="0.4" perimeter="0" name="E"/>
+<constraint x="0.01" y="0.995" perimeter="0" name="SW"/>
+</connections>
+<background>
+<save/>
+<linejoin join="round"/>
+<path>
+<move x="12.1" y="31.8"/>
+<arc rx="8" ry="8" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="12.1" y="16.8"/>
+<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33.1" y="8.8"/>
+<arc rx="14" ry="14" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="59.1" y="8.8"/>
+<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="79.1" y="16.8"/>
+<arc rx="8" ry="8" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="79.1" y="31.8"/>
+<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="58.1" y="38.8"/>
+<arc rx="14" ry="14" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="34.1" y="38.8"/>
+<arc rx="10" ry="8" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="12.1" y="31.8"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<restore/>
+<linejoin join="miter"/>
+<ellipse x="9.1" y="46.1" w="12" h="5.4"/>
+<fillstroke/>
+<ellipse x="4.3" y="53.5" w="7.6" h="3.6"/>
+<fillstroke/>
+<ellipse x="0" y="58.8" w="4.8" h="2.6"/>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Cone" h="96.91" w="99" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+<path>
+<move x="49.5" y="0"/>
+<line x="99" y="88"/>
+<arc rx="25" ry="4.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="0" y="88"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="0" y="88"/>
+<arc rx="25" ry="4.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="99" y="88"/>
+</path>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Cross" h="98" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="34"/>
+<line x="34" y="34"/>
+<line x="34" y="0"/>
+<line x="64" y="0"/>
+<line x="64" y="34"/>
+<line x="98" y="34"/>
+<line x="98" y="64"/>
+<line x="64" y="64"/>
+<line x="64" y="98"/>
+<line x="34" y="98"/>
+<line x="34" y="64"/>
+<line x="0" y="64"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Document" h="98" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="98" y="14"/>
+<line x="98" y="98"/>
+<line x="0" y="98"/>
+<line x="0" y="0"/>
+<line x="84" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="84" y="0"/>
+<arc rx="18" ry="10" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="79" y="9"/>
+<line x="98" y="14"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Flash" h="95.5" w="60" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.565" y="0" perimeter="0" name="N"/>
+<constraint x="0" y="0.995" perimeter="0" name="SW"/>
+</connections>
+<background>
+
+<miterlimit limit="6"/>
+<path>
+<move x="0" y="95.5"/>
+<line x="20" y="75.5"/>
+<line x="3" y="61.5"/>
+<line x="20" y="49.5"/>
+<line x="3" y="31.5"/>
+<line x="34" y="0"/>
+<line x="60" y="25.5"/>
+<line x="36" y="39.5"/>
+<line x="50" y="53.5"/>
+<line x="29" y="65.5"/>
+<line x="42" y="76.5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Half Circle" h="49" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+</connections>
+<background>
+<path>
+<move x="0" y="0"/>
+<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="98" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Heart" h="94.74" w="103.89" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0.115" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0.07" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.93" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="51.94" y="94.74"/>
+<curve x1="55.79" y1="90.78" x2="77.8" y2="68.16" x3="91.56" y3="54.03"/>
+<curve x1="103.89" y1="41.37" x2="103.62" y2="22.91" x3="92.42" y3="11.46"/>
+<curve x1="81.21" y1="0" x2="63.09" y2="0.05" x3="51.94" y3="11.56"/>
+<curve x1="40.79" y1="0.05" x2="22.67" y2="0" x3="11.47" y3="11.45"/>
+<curve x1="0.26" y1="22.9" x2="0" y2="41.36" x3="12.32" y3="54.03"/>
+<curve x1="26.08" y1="68.16" x2="48.09" y2="90.78" x3="51.94" y3="94.74"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Loud Callout" h="59.9" w="93.3" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.49" y="0" perimeter="0" name="N"/>
+<constraint x="0.52" y="0.91" perimeter="0" name="S"/>
+<constraint x="0" y="0.51" perimeter="0" name="W"/>
+<constraint x="0.99" y="0.503" perimeter="0" name="E"/>
+<constraint x="0.04" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+
+<miterlimit limit="10"/>
+<path>
+<move x="14.9" y="43.9"/>
+<line x="9.3" y="46.7"/>
+<line x="11.1" y="40.9"/>
+<line x="6.6" y="43.9"/>
+<line x="8.3" y="39.2"/>
+<line x="2.8" y="40.8"/>
+<line x="6.6" y="36.4"/>
+<line x="0.9" y="36.2"/>
+<line x="5.8" y="32.7"/>
+<line x="0" y="30.8"/>
+<line x="5.3" y="28.2"/>
+<line x="0.3" y="25.6"/>
+<line x="5.9" y="24.19"/>
+<line x="0.8" y="19.9"/>
+<line x="6.5" y="19.8"/>
+<line x="2.8" y="15.1"/>
+<line x="8.2" y="16.1"/>
+<line x="5.9" y="11.3"/>
+<line x="11.5" y="13.2"/>
+<line x="10.2" y="8.7"/>
+<line x="15.7" y="10.6"/>
+<line x="14.9" y="6.15"/>
+<line x="19.2" y="9.3"/>
+<line x="19.8" y="4.3"/>
+<line x="23.4" y="8"/>
+<line x="23.8" y="3.4"/>
+<line x="28.5" y="6.9"/>
+<line x="30.3" y="1.3"/>
+<line x="33.3" y="6.2"/>
+<line x="34.7" y="0.6"/>
+<line x="38.2" y="6"/>
+<line x="40.6" y="0"/>
+<line x="42.8" y="5.8"/>
+<line x="45.6" y="0"/>
+<line x="47.1" y="6"/>
+<line x="51.3" y="1"/>
+<line x="50.8" y="6.3"/>
+<line x="55.4" y="0.6"/>
+<line x="55.1" y="6.6"/>
+<line x="60.5" y="1.4"/>
+<line x="61.1" y="7.1"/>
+<line x="66.1" y="2.7"/>
+<line x="66.2" y="8.7"/>
+<line x="71.9" y="4.4"/>
+<line x="70.5" y="10"/>
+<line x="77.6" y="6.2"/>
+<line x="74.9" y="11.8"/>
+<line x="83.9" y="7.8"/>
+<line x="80.1" y="13.6"/>
+<line x="88.1" y="11.9"/>
+<line x="85.2" y="17"/>
+<line x="91.2" y="16.9"/>
+<line x="87" y="20.1"/>
+<line x="93.3" y="21.2"/>
+<line x="87.9" y="24"/>
+<line x="93.2" y="25.8"/>
+<line x="86.8" y="26.8"/>
+<line x="92.4" y="30.3"/>
+<line x="86.6" y="30.8"/>
+<line x="90.9" y="34.8"/>
+<line x="84.2" y="33.5"/>
+<line x="87.8" y="38.8"/>
+<line x="82" y="36.6"/>
+<line x="84.7" y="41.7"/>
+<line x="79.2" y="40.7"/>
+<line x="79.8" y="46"/>
+<line x="76.3" y="42.9"/>
+<line x="75.6" y="48.6"/>
+<line x="72" y="44.7"/>
+<line x="71.7" y="51.2"/>
+<line x="68" y="46"/>
+<line x="66.2" y="52.1"/>
+<line x="63.7" y="46.6"/>
+<line x="61.2" y="53.7"/>
+<line x="59.7" y="47.6"/>
+<line x="56.9" y="53.8"/>
+<line x="55" y="48.1"/>
+<line x="52.8" y="53.9"/>
+<line x="50.9" y="48.1"/>
+<line x="48.4" y="54.5"/>
+<line x="47" y="48.1"/>
+<line x="44.4" y="53.7"/>
+<line x="43.2" y="47.4"/>
+<line x="40.1" y="54.2"/>
+<line x="38.8" y="47.4"/>
+<line x="36.3" y="54.7"/>
+<line x="35.6" y="47.8"/>
+<line x="32.4" y="55.1"/>
+<line x="30.9" y="46.6"/>
+<line x="28.6" y="53.3"/>
+<line x="26.8" y="47.8"/>
+<line x="3.8" y="59.9"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Moon" h="103.05" w="77.05" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.48" y="0" perimeter="0" name="N"/>
+<constraint x="1" y="0.89" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="37.05" y="0"/>
+<arc rx="48" ry="48" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="77.05" y="92"/>
+<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="37.05" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="No Symbol" h="100" w="100" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="50"/>
+<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="100" y="50"/>
+<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="50"/>
+<close/>
+<move x="78.95" y="69.7"/>
+<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="30.3" y="21.05"/>
+<close/>
+<move x="21.15" y="30.3"/>
+<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="69.7" y="79"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Octagon" h="98" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="29"/>
+<line x="29" y="0"/>
+<line x="69" y="0"/>
+<line x="98" y="29"/>
+<line x="98" y="69"/>
+<line x="69" y="98"/>
+<line x="29" y="98"/>
+<line x="0" y="69"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Orthogonal Triangle" h="97" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0" perimeter="0" name="NW"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+<constraint x="0.5" y="0.5" perimeter="0" name="center"/>
+</connections>
+<background>
+<path>
+<move x="0" y="97"/>
+<line x="0" y="0"/>
+<line x="97" y="97"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Oval Callout" h="63.15" w="109.43" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0.045" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.84" perimeter="0" name="S"/>
+<constraint x="0.045" y="0.45" perimeter="0" name="W"/>
+<constraint x="0.945" y="0.45" perimeter="0" name="E"/>
+<constraint x="0.08" y="1" perimeter="0" name="SW"/>
+</connections>
+<background>
+
+<miterlimit limit="15"/>
+<path>
+<move x="20.53" y="46.15"/>
+<arc rx="49" ry="25" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="31.53" y="50.15"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="9.03" y="63.15"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="20.53" y="46.15"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Parallelepiped" h="60" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0.12" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.88" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.24" y="0" perimeter="0" name="NW"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+<constraint x="0.76" y="1" perimeter="0" name="SE"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+</connections>
+<background>
+<path>
+<move x="0" y="60"/>
+<line x="23.5" y="0"/>
+<line x="97" y="0"/>
+<line x="73.5" y="60"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Pentagon" h="90" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0" y="0.365" perimeter="0" name="W"/>
+<constraint x="1" y="0.365" perimeter="0" name="E"/>
+<constraint x="0.81" y="1" perimeter="0" name="SE"/>
+<constraint x="0.19" y="1" perimeter="0" name="SW"/>
+</connections>
+<background>
+<path>
+<move x="18.5" y="90"/>
+<line x="0" y="33"/>
+<line x="48.5" y="0"/>
+<line x="97" y="33"/>
+<line x="78.5" y="90"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Rectangular Callout" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.715" perimeter="0" name="S"/>
+<constraint x="0" y="0.355" perimeter="0" name="W"/>
+<constraint x="1" y="0.355" perimeter="0" name="E"/>
+<constraint x="0.04" y="1" perimeter="0" name="SW"/>
+</connections>
+<background>
+
+<miterlimit limit="10"/>
+<path>
+<move x="15" y="43"/>
+<line x="0" y="43"/>
+<line x="0" y="0"/>
+<line x="98" y="0"/>
+<line x="98" y="43"/>
+<line x="29" y="43"/>
+<line x="4" y="60"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Rounded Rectangular Callout" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.715" perimeter="0" name="S"/>
+<constraint x="0" y="0.355" perimeter="0" name="W"/>
+<constraint x="1" y="0.355" perimeter="0" name="E"/>
+<constraint x="0.04" y="1" perimeter="0" name="SW"/>
+</connections>
+<background>
+
+<miterlimit limit="15"/>
+<path>
+<move x="15.5" y="43"/>
+<line x="5" y="43"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="38"/>
+<line x="0" y="5"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5" y="0"/>
+<line x="93" y="0"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="5"/>
+<line x="98" y="38"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="93" y="43"/>
+<line x="29" y="43"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="4" y="60"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="15.5" y="43"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Smiley" h="98" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="98" h="98"/>
+</background>
+<foreground>
+<fillstroke/>
+<save/>
+<path>
+<move x="11" y="54"/>
+<arc rx="38" ry="27" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="87" y="54"/>
+</path>
+<stroke/>
+<restore/>
+<strokewidth width="1"/>
+<path>
+<move x="16" y="51"/>
+<line x="6" y="57"/>
+</path>
+<stroke/>
+<path>
+<move x="82" y="51"/>
+<line x="92" y="57"/>
+</path>
+<stroke/>
+<strokewidth width="6"/>
+<ellipse x="24" y="27" w="6" h="16"/>
+<fillstroke/>
+<ellipse x="68" y="27" w="6" h="16"/>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Star" h="90" w="95" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.76" perimeter="0" name="S"/>
+<constraint x="0" y="0.367" perimeter="0" name="W"/>
+<constraint x="1" y="0.367" perimeter="0" name="E"/>
+<constraint x="0.185" y="1" perimeter="0" name="SW"/>
+<constraint x="0.815" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="33"/>
+<line x="36.4" y="33"/>
+<line x="47.5" y="0"/>
+<line x="58.6" y="33"/>
+<line x="95" y="33"/>
+<line x="66" y="55.1"/>
+<line x="77.5" y="90"/>
+<line x="47.5" y="68.4"/>
+<line x="17.5" y="90"/>
+<line x="29" y="55.1"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Sun" h="95" w="95" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="17.5" y="17.5" w="60" h="60"/>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="42.5" y="14.5"/>
+<line x="47.5" y="0"/>
+<line x="52.5" y="14.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="42.5" y="80.5"/>
+<line x="47.5" y="95"/>
+<line x="52.5" y="80.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="14.5" y="42.5"/>
+<line x="0" y="47.5"/>
+<line x="14.5" y="52.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="80.5" y="42.5"/>
+<line x="95" y="47.5"/>
+<line x="80.5" y="52.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="67.5" y="20.5"/>
+<line x="81.2" y="13.9"/>
+<line x="74.5" y="27.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="67.5" y="74.5"/>
+<line x="81.2" y="81.1"/>
+<line x="74.5" y="67.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="27.5" y="20.5"/>
+<line x="13.8" y="13.9"/>
+<line x="20.5" y="27.5"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="27.5" y="74.5"/>
+<line x="13.8" y="81.1"/>
+<line x="20.5" y="67.5"/>
+<close/>
+</path>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Tick" h="97.54" w="84.4" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.9" y="0.01" perimeter="0" name="N"/>
+<constraint x="0.32" y="0.992" perimeter="0" name="S"/>
+<constraint x="0" y="0.7" perimeter="0" name="W"/>
+<constraint x="1" y="0.06" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0.36" y="66.69"/>
+<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="16.36" y="58.69"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="26.36" y="69.69"/>
+<arc rx="200" ry="200" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="63.36" y="5.69"/>
+<arc rx="18" ry="18" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="80.36" y="1.69"/>
+<arc rx="4.5" ry="4.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="83.36" y="8.69"/>
+<arc rx="230" ry="230" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="35.36" y="94.69"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="17.36" y="94.69"/>
+<arc rx="100" ry="100" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0.36" y="68.69"/>
+<arc rx="2" ry="2" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0.36" y="66.69"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Trapezoid" h="98" w="97" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0.12" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.88" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.24" y="0" perimeter="0" name="NW"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+<constraint x="0.76" y="0" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="98"/>
+<line x="23.5" y="0"/>
+<line x="73.5" y="0"/>
+<line x="97" y="98"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Wave" h="56.7" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0.295" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="8.7"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="8.7"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="65" y="8.7"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="8.7"/>
+<line x="98" y="48.7"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="65" y="48.7"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="48.7"/>
+<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0" y="48.7"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="X" h="98" w="96" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0.29" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.71" perimeter="0" name="S"/>
+<constraint x="0.33" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.65" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0" perimeter="0" name="NW"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="0"/>
+<line x="28" y="0"/>
+<line x="48" y="29"/>
+<line x="68" y="0"/>
+<line x="96" y="0"/>
+<line x="62" y="49"/>
+<line x="96" y="98"/>
+<line x="68" y="98"/>
+<line x="48" y="69"/>
+<line x="28" y="98"/>
+<line x="0" y="98"/>
+<line x="32" y="49"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+</shapes>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1162 - 0
assets/mxgraph-editor/stencils/bpmn.xml


BIN
assets/mxgraph-editor/stencils/clipart/Credit_Card_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Database_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Doctor1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Earth_globe_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Email_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Empty_Folder_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Firewall_02_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Full_Folder_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Gear_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Graph_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Laptop_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Lock_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/MacBook_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Monitor_Tower_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Piggy_Bank_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Pilot1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Printer_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Router_Icon_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Safe_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Security1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Server_Tower_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Shopping_Cart_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Software_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Soldier1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Suit1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Suit2_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Suit3_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Tech1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Telesales1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Virtual_Machine_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Virus_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Wireless_Router_N_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Worker1_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/Workstation_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/iMac_128x128.png


BIN
assets/mxgraph-editor/stencils/clipart/iPad_128x128.png


+ 920 - 0
assets/mxgraph-editor/stencils/flowchart.xml

@@ -0,0 +1,920 @@
+<shapes name="mxGraph.flowchart">
+<shape name="Annotation 1" h="98" w="50" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0" perimeter="0" name="NW"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="50" y="0"/>
+<line x="0" y="0"/>
+<line x="0" y="98"/>
+<line x="50" y="98"/>
+</path>
+</background>
+<foreground>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Annotation 2" h="98" w="100" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="100" y="0"/>
+<line x="50" y="0"/>
+<line x="50" y="98"/>
+<line x="100" y="98"/>
+</path>
+</background>
+<foreground>
+<stroke/>
+<path>
+<move x="0" y="49"/>
+<line x="50" y="49"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Card" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.1" y="0.16" perimeter="0" name="NW"/>
+<constraint x="0.015" y="0.98" perimeter="0" name="SW"/>
+<constraint x="0.985" y="0.02" perimeter="0" name="NE"/>
+<constraint x="0.985" y="0.98" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="19" y="0"/>
+<line x="93" y="0"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="5"/>
+<line x="98" y="55"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="93" y="60"/>
+<line x="5" y="60"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55"/>
+<line x="0" y="20"/>
+<line x="19" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Collate" h="98" w="96.82" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.02" perimeter="0" name="NW"/>
+<constraint x="0" y="0.98" perimeter="0" name="SW"/>
+<constraint x="1" y="0.02" perimeter="0" name="NE"/>
+<constraint x="1" y="0.98" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="92.41" y="0"/>
+<arc rx="6" ry="3.5" x-axis-rotation="-15" large-arc-flag="0" sweep-flag="1" x="95.41" y="5"/>
+<line x="1.41" y="93"/>
+<arc rx="6" ry="3.5" x-axis-rotation="-15" large-arc-flag="0" sweep-flag="0" x="4.41" y="98"/>
+<line x="92.41" y="98"/>
+<arc rx="6" ry="3.5" x-axis-rotation="15" large-arc-flag="0" sweep-flag="0" x="95.41" y="93"/>
+<line x="1.41" y="5"/>
+<arc rx="6" ry="3.5" x-axis-rotation="15" large-arc-flag="0" sweep-flag="1" x="4.41" y="0"/>
+<line x="92.41" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Data" h="60.24" w="98.77" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0.095" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.905" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.23" y="0.02" perimeter="0" name="NW"/>
+<constraint x="0.015" y="0.98" perimeter="0" name="SW"/>
+<constraint x="0.985" y="0.02" perimeter="0" name="NE"/>
+<constraint x="0.77" y="0.98" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="19.37" y="5.12"/>
+<arc rx="6" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="24.37" y="0.12"/>
+<line x="93.37" y="0.12"/>
+<arc rx="5" ry="4" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98.37" y="5.12"/>
+<line x="79.37" y="55.12"/>
+<arc rx="6" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="74.37" y="60.12"/>
+<line x="4.37" y="60.12"/>
+<arc rx="5" ry="4" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0.37" y="55.12"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Database" h="60" w="60" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0.15" perimeter="0" name="NW"/>
+<constraint x="0" y="0.85" perimeter="0" name="SW"/>
+<constraint x="1" y="0.15" perimeter="0" name="NE"/>
+<constraint x="1" y="0.85" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="50"/>
+<line x="0" y="10"/>
+<arc rx="30" ry="10" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="60" y="10"/>
+<line x="60" y="50"/>
+<arc rx="30" ry="10" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="50"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="0" y="10"/>
+<arc rx="30" ry="10" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="60" y="10"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Decision" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="50" y="0"/>
+<line x="100" y="50"/>
+<line x="50" y="100"/>
+<line x="0" y="50"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Delay" h="60" w="98.25" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.02" y="0.015" perimeter="0" name="NW"/>
+<constraint x="0.02" y="0.985" perimeter="0" name="SW"/>
+<constraint x="0.81" y="0" perimeter="0" name="NE"/>
+<constraint x="0.81" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="5"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5" y="0"/>
+<line x="79" y="0"/>
+<arc rx="33" ry="33" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="79" y="60"/>
+<line x="5" y="60"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55"/>
+<line x="0" y="5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Direct Data" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.08" y="0" perimeter="0" name="NW"/>
+<constraint x="0.08" y="1" perimeter="0" name="SW"/>
+<constraint x="0.91" y="0" perimeter="0" name="NE"/>
+<constraint x="0.91" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="9" y="0"/>
+<line x="89" y="0"/>
+<arc rx="9" ry="30" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="89" y="60"/>
+<line x="9" y="60"/>
+<arc rx="9" ry="30" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="9" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="89" y="0"/>
+<arc rx="9" ry="30" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="89" y="60"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Display" h="60" w="98.25" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.2" y="0.14" perimeter="0" name="NW"/>
+<constraint x="0.2" y="0.86" perimeter="0" name="SW"/>
+<constraint x="0.92" y="0.14" perimeter="0" name="NE"/>
+<constraint x="0.92" y="0.86" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="30"/>
+<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="39" y="0"/>
+<line x="79" y="0"/>
+<arc rx="33" ry="33" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="79" y="60"/>
+<line x="39" y="60"/>
+<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="30"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Document" h="60.9" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.9" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.02" y="0.015" perimeter="0" name="NW"/>
+<constraint x="0" y="0.9" perimeter="0" name="SW"/>
+<constraint x="0.98" y="0.015" perimeter="0" name="NE"/>
+<constraint x="1" y="0.9" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="5"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5" y="0"/>
+<line x="93" y="0"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="5"/>
+<line x="98" y="55"/>
+<arc rx="70" ry="70" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="49" y="55"/>
+<arc rx="70" ry="70" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Extract or Measurement" h="61.03" w="95.34" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0.22" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.78" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.01" y="0.97" perimeter="0" name="SW"/>
+<constraint x="0.99" y="0.97" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="3.64" y="61.02"/>
+<line x="91.64" y="61.02"/>
+<arc rx="6" ry="4" x-axis-rotation="30" large-arc-flag="0" sweep-flag="0" x="94.64" y="56.02"/>
+<line x="49.64" y="1.02"/>
+<arc rx="3" ry="3" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="45.64" y="1.02"/>
+<line x="0.64" y="56.02"/>
+<arc rx="6" ry="4" x-axis-rotation="-35" large-arc-flag="0" sweep-flag="0" x="3.64" y="61.02"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Internal Storage" h="70" w="70" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.02" y="0.015" perimeter="0" name="NW"/>
+<constraint x="0.02" y="0.985" perimeter="0" name="SW"/>
+<constraint x="0.98" y="0.015" perimeter="0" name="NE"/>
+<constraint x="0.98" y="0.985" perimeter="0" name="SE"/>
+</connections>
+<background>
+<roundrect x="0" y="0" w="70" h="70" arcsize="7.142857142857142"/>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="0" y="15"/>
+<line x="70" y="15"/>
+</path>
+<stroke/>
+<path>
+<move x="15" y="0"/>
+<line x="15" y="70"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Loop Limit" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.1" y="0.15" perimeter="0" name="NW"/>
+<constraint x="0.02" y="0.985" perimeter="0" name="SW"/>
+<constraint x="0.9" y="0.15" perimeter="0" name="NE"/>
+<constraint x="0.98" y="0.985" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="19" y="0"/>
+<line x="79" y="0"/>
+<line x="98" y="20"/>
+<line x="98" y="55"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="93" y="60"/>
+<line x="5" y="60"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55"/>
+<line x="0" y="20"/>
+<line x="19" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Manual Input" h="60" w="98.05" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0.195" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.02" y="0.985" perimeter="0" name="SW"/>
+<constraint x="0.98" y="0.015" perimeter="0" name="NE"/>
+<constraint x="0.98" y="0.985" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="25"/>
+<line x="93" y="0"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="5"/>
+<line x="98" y="55"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="94" y="60"/>
+<line x="5" y="60"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55"/>
+<line x="0" y="25"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Manual Operation" h="60.04" w="98.79" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0.1" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.9" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.02" y="0.015" perimeter="0" name="NW"/>
+<constraint x="0.22" y="0.985" perimeter="0" name="SW"/>
+<constraint x="0.98" y="0.015" perimeter="0" name="NE"/>
+<constraint x="0.78" y="0.985" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0.39" y="5.04"/>
+<arc rx="5" ry="4" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5.39" y="0.04"/>
+<line x="93.39" y="0.04"/>
+<arc rx="5" ry="4" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98.39" y="5.04"/>
+<line x="79.39" y="55.04"/>
+<arc rx="6.5" ry="6.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="74.39" y="60.04"/>
+<line x="24.39" y="60.04"/>
+<arc rx="6.5" ry="6.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="19.39" y="55.04"/>
+<line x="0.39" y="5.04"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Merge or Storage" h="61.03" w="95.34" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0" perimeter="0" name="NW"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="3.64" y="0.01"/>
+<line x="91.64" y="0.01"/>
+<arc rx="6" ry="4" x-axis-rotation="-30" large-arc-flag="0" sweep-flag="1" x="94.64" y="5.01"/>
+<line x="49.64" y="60.01"/>
+<arc rx="3" ry="3" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="45.64" y="60.01"/>
+<line x="0.64" y="5.01"/>
+<arc rx="6" ry="4" x-axis-rotation="35" large-arc-flag="0" sweep-flag="1" x="3.64" y="0.01"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Multi-Document" h="60.28" w="88" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.88" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.08" y="0.1" perimeter="0" name="NW"/>
+<constraint x="0" y="0.91" perimeter="0" name="SW"/>
+<constraint x="0.98" y="0.02" perimeter="0" name="NE"/>
+<constraint x="0.885" y="0.91" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="10" y="5"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="15" y="0"/>
+<line x="83" y="0"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="88" y="5"/>
+<line x="88" y="45"/>
+<arc rx="50" ry="50" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="49" y="45"/>
+<arc rx="50" ry="50" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="10" y="45"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="5" y="10"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="10" y="5"/>
+<line x="78" y="5"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="83" y="10"/>
+<line x="83" y="50"/>
+<arc rx="50" ry="50" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="44" y="50"/>
+<arc rx="50" ry="50" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5" y="50"/>
+<close/>
+</path>
+<fillstroke/>
+<path>
+<move x="0" y="15"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5" y="10"/>
+<line x="73" y="10"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="15"/>
+<line x="78" y="55"/>
+<arc rx="50" ry="50" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="39" y="55"/>
+<arc rx="50" ry="50" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55"/>
+<close/>
+</path>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Off-page Reference" h="60" w="60" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0" perimeter="0" name="NW"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="0"/>
+<line x="60" y="0"/>
+<line x="60" y="30"/>
+<line x="30" y="60"/>
+<line x="0" y="30"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="On-page Reference" h="60" w="60" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="60" h="60"/>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Or" h="70" w="70" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="70" h="70"/>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="10" y="60"/>
+<line x="60" y="10"/>
+</path>
+<stroke/>
+<path>
+<move x="10" y="10"/>
+<line x="60" y="60"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Paper Tape" h="61.81" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0.09" perimeter="0" name="N"/>
+<constraint x="0.5" y="0.91" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0.09" perimeter="0" name="NW"/>
+<constraint x="0" y="0.91" perimeter="0" name="SW"/>
+<constraint x="1" y="0.09" perimeter="0" name="NE"/>
+<constraint x="1" y="0.91" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="0" y="5.9"/>
+<arc rx="70" ry="70" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="49" y="5.9"/>
+<arc rx="70" ry="70" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="5.9"/>
+<line x="98" y="55.9"/>
+<arc rx="70" ry="70" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="49" y="55.9"/>
+<arc rx="70" ry="70" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="55.9"/>
+<line x="0" y="5.9"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Parallel Mode" h="40" w="94" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0" y="0" perimeter="0" name="NW"/>
+<constraint x="0" y="1" perimeter="0" name="SW"/>
+<constraint x="1" y="0" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<save/>
+<fillcolor color="#ffff00"/>
+<path>
+<move x="47" y="15"/>
+<line x="52" y="20"/>
+<line x="47" y="25"/>
+<line x="42" y="20"/>
+<line x="47" y="15"/>
+<close/>
+<move x="27" y="15"/>
+<line x="32" y="20"/>
+<line x="27" y="25"/>
+<line x="22" y="20"/>
+<line x="27" y="15"/>
+<close/>
+<move x="67" y="15"/>
+<line x="72" y="20"/>
+<line x="67" y="25"/>
+<line x="62" y="20"/>
+<line x="67" y="15"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<restore/>
+<path>
+<move x="0" y="0"/>
+<line x="94" y="0"/>
+</path>
+<stroke/>
+<path>
+<move x="0" y="40"/>
+<line x="94" y="40"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Predefined Process" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.02" y="0.015" perimeter="0" name="NW"/>
+<constraint x="0.02" y="0.985" perimeter="0" name="SW"/>
+<constraint x="0.98" y="0.015" perimeter="0" name="NE"/>
+<constraint x="0.98" y="0.985" perimeter="0" name="SE"/>
+</connections>
+<background>
+<roundrect x="0" y="0" w="98" h="60" arcsize="6.717687074829931"/>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="14" y="0"/>
+<line x="14" y="60"/>
+</path>
+<stroke/>
+<path>
+<move x="84" y="0"/>
+<line x="84" y="60"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Preparation" h="60" w="97.11" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.26" y="0.02" perimeter="0" name="NW"/>
+<constraint x="0.26" y="0.98" perimeter="0" name="SW"/>
+<constraint x="0.74" y="0.02" perimeter="0" name="NE"/>
+<constraint x="0.74" y="0.98" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="20.56" y="5"/>
+<arc rx="15" ry="15" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="31.56" y="0"/>
+<line x="65.56" y="0"/>
+<arc rx="15" ry="15" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="76.56" y="5"/>
+<line x="96.56" y="28"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="96.56" y="32"/>
+<line x="76.56" y="55"/>
+<arc rx="15" ry="15" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="65.56" y="60"/>
+<line x="31.56" y="60"/>
+<arc rx="15" ry="15" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="20.56" y="55"/>
+<line x="0.56" y="32"/>
+<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0.56" y="28"/>
+<line x="20.56" y="5"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Process" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<roundrect x="0" y="0" w="100" h="100" arcsize="6"/>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Sequential Data" h="99" w="99" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="1" y="1" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="99" h="99"/>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="49.5" y="99"/>
+<line x="99" y="99"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Sort" h="98" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="51" y="1"/>
+<line x="97" y="47"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="97" y="51"/>
+<line x="51" y="97"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="47" y="97"/>
+<line x="1" y="51"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="1" y="47"/>
+<line x="47" y="1"/>
+<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="51" y="1"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="0" y="49"/>
+<line x="98" y="49"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Start 1" h="60" w="99" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="99" h="60"/>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Start 2" h="99" w="99" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="99" h="99"/>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Stored Data" h="60" w="96.51" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="0.93" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.1" y="0" perimeter="0" name="NW"/>
+<constraint x="0.1" y="1" perimeter="0" name="SW"/>
+<constraint x="0.995" y="0.01" perimeter="0" name="NE"/>
+<constraint x="0.995" y="0.99" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="10" y="0"/>
+<line x="96" y="0"/>
+<arc rx="1.5" ry="1.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="96" y="2"/>
+<arc rx="10" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="96" y="58"/>
+<arc rx="1.5" ry="1.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="96" y="60"/>
+<line x="10" y="60"/>
+<arc rx="10" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="10" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Summing Function" h="70" w="70" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
+<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
+<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
+<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
+</connections>
+<background>
+<ellipse x="0" y="0" w="70" h="70"/>
+</background>
+<foreground>
+<fillstroke/>
+<path>
+<move x="0" y="35"/>
+<line x="70" y="35"/>
+</path>
+<stroke/>
+<path>
+<move x="35" y="0"/>
+<line x="35" y="70"/>
+</path>
+<stroke/>
+</foreground>
+</shape>
+<shape name="Terminator" h="60" w="98" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0.5" y="0" perimeter="0" name="N"/>
+<constraint x="0.5" y="1" perimeter="0" name="S"/>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+<constraint x="0.11" y="0.11" perimeter="0" name="NW"/>
+<constraint x="0.11" y="0.89" perimeter="0" name="SW"/>
+<constraint x="0.89" y="0.11" perimeter="0" name="NE"/>
+<constraint x="0.89" y="0.89" perimeter="0" name="SE"/>
+</connections>
+<background>
+<path>
+<move x="30" y="0"/>
+<line x="68" y="0"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="68" y="60"/>
+<line x="30" y="60"/>
+<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="30" y="0"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+<shape name="Transfer" h="70" w="97.5" aspect="variable" strokewidth="inherit">
+<connections>
+<constraint x="0" y="0.5" perimeter="0" name="W"/>
+<constraint x="1" y="0.5" perimeter="0" name="E"/>
+</connections>
+<background>
+<path>
+<move x="0" y="20"/>
+<line x="59" y="20"/>
+<line x="59" y="0"/>
+<line x="97.5" y="35"/>
+<line x="59" y="70"/>
+<line x="59" y="50"/>
+<line x="0" y="50"/>
+<close/>
+</path>
+</background>
+<foreground>
+<fillstroke/>
+</foreground>
+</shape>
+</shapes>

+ 109 - 0
assets/mxgraph-editor/styles/default.xml

@@ -0,0 +1,109 @@
+<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>
+</mxStylesheet>

BIN
assets/mxgraph-editor/styles/down.gif


Diferenças do arquivo suprimidas por serem muito extensas
+ 1507 - 0
assets/mxgraph-editor/styles/grapheditor.css


+ 0 - 0
assets/mxgraph-editor/styles/help.css


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff